173
|
1 ; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
|
150
|
2
|
|
3 ; GCN-LABEL: {{^}}kernel_ieee_mode_default:
|
|
4 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
5 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
6 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
7 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
8 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
9 ; GCN-NOT: v_mul_f32
|
|
10 define amdgpu_kernel void @kernel_ieee_mode_default() #0 {
|
252
|
11 %val0 = load volatile float, ptr addrspace(1) undef
|
|
12 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
13 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
14 store volatile float %min, ptr addrspace(1) undef
|
150
|
15 ret void
|
|
16 }
|
|
17
|
|
18 ; GCN-LABEL: {{^}}kernel_ieee_mode_on:
|
|
19 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
20 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
21 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
22 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
23 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
24 ; GCN-NOT: v_mul_f32
|
|
25 define amdgpu_kernel void @kernel_ieee_mode_on() #1 {
|
252
|
26 %val0 = load volatile float, ptr addrspace(1) undef
|
|
27 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
28 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
29 store volatile float %min, ptr addrspace(1) undef
|
150
|
30 ret void
|
|
31 }
|
|
32
|
|
33 ; GCN-LABEL: {{^}}kernel_ieee_mode_off:
|
|
34 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
35 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
36 ; GCN-NOT: [[VAL0]]
|
|
37 ; GCN-NOT: [[VAL1]]
|
|
38 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[VAL0]], [[VAL1]]
|
|
39 ; GCN-NOT: v_mul_f32
|
|
40 define amdgpu_kernel void @kernel_ieee_mode_off() #2 {
|
252
|
41 %val0 = load volatile float, ptr addrspace(1) undef
|
|
42 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
43 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
44 store volatile float %min, ptr addrspace(1) undef
|
150
|
45 ret void
|
|
46 }
|
|
47
|
|
48 ; GCN-LABEL: {{^}}func_ieee_mode_default:
|
|
49 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
50 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
51 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
52 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
53 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
54 ; GCN-NOT: v_mul_f32
|
|
55 define void @func_ieee_mode_default() #0 {
|
252
|
56 %val0 = load volatile float, ptr addrspace(1) undef
|
|
57 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
58 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
59 store volatile float %min, ptr addrspace(1) undef
|
150
|
60 ret void
|
|
61 }
|
|
62
|
|
63 ; GCN-LABEL: {{^}}func_ieee_mode_on:
|
|
64 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
65 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
66 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
67 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
68 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
69 ; GCN-NOT: v_mul_f32
|
|
70 define void @func_ieee_mode_on() #1 {
|
252
|
71 %val0 = load volatile float, ptr addrspace(1) undef
|
|
72 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
73 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
74 store volatile float %min, ptr addrspace(1) undef
|
150
|
75 ret void
|
|
76 }
|
|
77
|
|
78 ; GCN-LABEL: {{^}}func_ieee_mode_off:
|
|
79 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
80 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
81 ; GCN-NOT: [[VAL0]]
|
|
82 ; GCN-NOT: [[VAL1]]
|
|
83 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[VAL0]], [[VAL1]]
|
|
84 ; GCN-NOT: v_mul_f32
|
|
85 define void @func_ieee_mode_off() #2 {
|
252
|
86 %val0 = load volatile float, ptr addrspace(1) undef
|
|
87 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
88 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
89 store volatile float %min, ptr addrspace(1) undef
|
150
|
90 ret void
|
|
91 }
|
|
92
|
|
93 ; GCN-LABEL: {{^}}cs_ieee_mode_default:
|
|
94 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
95 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
|
96 ; GCN-NOT: [[VAL0]]
|
|
97 ; GCN-NOT: [[VAL1]]
|
150
|
98 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
99 ; GCN-NOT: v_mul_f32
|
|
100 define amdgpu_cs void @cs_ieee_mode_default() #0 {
|
252
|
101 %val0 = load volatile float, ptr addrspace(1) undef
|
|
102 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
103 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
104 store volatile float %min, ptr addrspace(1) undef
|
150
|
105 ret void
|
|
106 }
|
|
107
|
|
108 ; GCN-LABEL: {{^}}cs_ieee_mode_on:
|
|
109 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
110 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
111 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
112 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
113 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
114 ; GCN-NOT: v_mul_f32
|
|
115 define amdgpu_cs void @cs_ieee_mode_on() #1 {
|
252
|
116 %val0 = load volatile float, ptr addrspace(1) undef
|
|
117 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
118 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
119 store volatile float %min, ptr addrspace(1) undef
|
150
|
120 ret void
|
|
121 }
|
|
122
|
|
123 ; GCN-LABEL: {{^}}cs_ieee_mode_off:
|
|
124 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
125 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
126 ; GCN-NOT: [[VAL0]]
|
|
127 ; GCN-NOT: [[VAL1]]
|
|
128 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[VAL0]], [[VAL1]]
|
|
129 ; GCN-NOT: v_mul_f32
|
|
130 define amdgpu_cs void @cs_ieee_mode_off() #2 {
|
252
|
131 %val0 = load volatile float, ptr addrspace(1) undef
|
|
132 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
133 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
134 store volatile float %min, ptr addrspace(1) undef
|
150
|
135 ret void
|
|
136 }
|
|
137
|
|
138 ; GCN-LABEL: {{^}}ps_ieee_mode_default:
|
|
139 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
140 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
141 ; GCN-NOT: [[VAL0]]
|
|
142 ; GCN-NOT: [[VAL1]]
|
|
143 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[VAL0]], [[VAL1]]
|
|
144 ; GCN-NOT: v_mul_f32
|
|
145 define amdgpu_ps void @ps_ieee_mode_default() #0 {
|
252
|
146 %val0 = load volatile float, ptr addrspace(1) undef
|
|
147 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
148 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
149 store volatile float %min, ptr addrspace(1) undef
|
150
|
150 ret void
|
|
151 }
|
|
152
|
|
153 ; GCN-LABEL: {{^}}ps_ieee_mode_on:
|
|
154 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
155 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
156 ; GCN-DAG: v_mul_f32_e32 [[QUIET0:v[0-9]+]], 1.0, [[VAL0]]
|
|
157 ; GCN-DAG: v_mul_f32_e32 [[QUIET1:v[0-9]+]], 1.0, [[VAL1]]
|
|
158 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[QUIET0]], [[QUIET1]]
|
|
159 ; GCN-NOT: v_mul_f32
|
|
160 define amdgpu_ps void @ps_ieee_mode_on() #1 {
|
252
|
161 %val0 = load volatile float, ptr addrspace(1) undef
|
|
162 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
163 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
164 store volatile float %min, ptr addrspace(1) undef
|
150
|
165 ret void
|
|
166 }
|
|
167
|
|
168 ; GCN-LABEL: {{^}}ps_ieee_mode_off:
|
|
169 ; GCN: {{buffer|global|flat}}_load_dword [[VAL0:v[0-9]+]]
|
221
|
170 ; GCN: {{buffer|global|flat}}_load_dword [[VAL1:v[0-9]+]]
|
150
|
171 ; GCN-NOT: [[VAL0]]
|
|
172 ; GCN-NOT: [[VAL1]]
|
|
173 ; GCN: v_min_f32_e32 [[MIN:v[0-9]+]], [[VAL0]], [[VAL1]]
|
|
174 ; GCN-NOT: v_mul_f32
|
|
175 define amdgpu_ps void @ps_ieee_mode_off() #2 {
|
252
|
176 %val0 = load volatile float, ptr addrspace(1) undef
|
|
177 %val1 = load volatile float, ptr addrspace(1) undef
|
150
|
178 %min = call float @llvm.minnum.f32(float %val0, float %val1)
|
252
|
179 store volatile float %min, ptr addrspace(1) undef
|
150
|
180 ret void
|
|
181 }
|
|
182
|
|
183 declare float @llvm.minnum.f32(float, float) #3
|
|
184
|
|
185 attributes #0 = { nounwind }
|
|
186 attributes #1 = { nounwind "amdgpu-ieee"="true" }
|
|
187 attributes #2 = { nounwind "amdgpu-ieee"="false" }
|
|
188 attributes #3 = { nounwind readnone speculatable }
|