xref: /llvm-project/llvm/test/CodeGen/SPIRV/transcoding/fcmp.ll (revision 0a443f13b49b3f392461a0bb60b0146cfc4607c7)
1; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
3
4; CHECK-SPIRV: OpName %[[#r1:]] "r1"
5; CHECK-SPIRV: OpName %[[#r2:]] "r2"
6; CHECK-SPIRV: OpName %[[#r3:]] "r3"
7; CHECK-SPIRV: OpName %[[#r4:]] "r4"
8; CHECK-SPIRV: OpName %[[#r5:]] "r5"
9; CHECK-SPIRV: OpName %[[#r6:]] "r6"
10; CHECK-SPIRV: OpName %[[#r7:]] "r7"
11; CHECK-SPIRV: OpName %[[#r8:]] "r8"
12; CHECK-SPIRV: OpName %[[#r9:]] "r9"
13; CHECK-SPIRV: OpName %[[#r10:]] "r10"
14; CHECK-SPIRV: OpName %[[#r11:]] "r11"
15; CHECK-SPIRV: OpName %[[#r12:]] "r12"
16; CHECK-SPIRV: OpName %[[#r13:]] "r13"
17; CHECK-SPIRV: OpName %[[#r14:]] "r14"
18; CHECK-SPIRV: OpName %[[#r15:]] "r15"
19; CHECK-SPIRV: OpName %[[#r16:]] "r16"
20; CHECK-SPIRV: OpName %[[#r17:]] "r17"
21; CHECK-SPIRV: OpName %[[#r18:]] "r18"
22; CHECK-SPIRV: OpName %[[#r19:]] "r19"
23; CHECK-SPIRV: OpName %[[#r20:]] "r20"
24; CHECK-SPIRV: OpName %[[#r21:]] "r21"
25; CHECK-SPIRV: OpName %[[#r22:]] "r22"
26; CHECK-SPIRV: OpName %[[#r23:]] "r23"
27; CHECK-SPIRV: OpName %[[#r24:]] "r24"
28; CHECK-SPIRV: OpName %[[#r25:]] "r25"
29; CHECK-SPIRV: OpName %[[#r26:]] "r26"
30; CHECK-SPIRV: OpName %[[#r27:]] "r27"
31; CHECK-SPIRV: OpName %[[#r28:]] "r28"
32; CHECK-SPIRV: OpName %[[#r29:]] "r29"
33; CHECK-SPIRV: OpName %[[#r30:]] "r30"
34; CHECK-SPIRV: OpName %[[#r31:]] "r31"
35; CHECK-SPIRV: OpName %[[#r32:]] "r32"
36; CHECK-SPIRV: OpName %[[#r33:]] "r33"
37; CHECK-SPIRV: OpName %[[#r34:]] "r34"
38; CHECK-SPIRV: OpName %[[#r35:]] "r35"
39; CHECK-SPIRV: OpName %[[#r36:]] "r36"
40; CHECK-SPIRV: OpName %[[#r37:]] "r37"
41; CHECK-SPIRV: OpName %[[#r38:]] "r38"
42; CHECK-SPIRV: OpName %[[#r39:]] "r39"
43; CHECK-SPIRV: OpName %[[#r40:]] "r40"
44; CHECK-SPIRV: OpName %[[#r41:]] "r41"
45; CHECK-SPIRV: OpName %[[#r42:]] "r42"
46; CHECK-SPIRV: OpName %[[#r43:]] "r43"
47; CHECK-SPIRV: OpName %[[#r44:]] "r44"
48; CHECK-SPIRV: OpName %[[#r45:]] "r45"
49; CHECK-SPIRV: OpName %[[#r46:]] "r46"
50; CHECK-SPIRV: OpName %[[#r47:]] "r47"
51; CHECK-SPIRV: OpName %[[#r48:]] "r48"
52; CHECK-SPIRV: OpName %[[#r49:]] "r49"
53; CHECK-SPIRV: OpName %[[#r50:]] "r50"
54; CHECK-SPIRV: OpName %[[#r51:]] "r51"
55; CHECK-SPIRV: OpName %[[#r52:]] "r52"
56; CHECK-SPIRV: OpName %[[#r53:]] "r53"
57; CHECK-SPIRV: OpName %[[#r54:]] "r54"
58; CHECK-SPIRV: OpName %[[#r55:]] "r55"
59; CHECK-SPIRV: OpName %[[#r56:]] "r56"
60; CHECK-SPIRV: OpName %[[#r57:]] "r57"
61; CHECK-SPIRV: OpName %[[#r58:]] "r58"
62; CHECK-SPIRV: OpName %[[#r59:]] "r59"
63; CHECK-SPIRV: OpName %[[#r60:]] "r60"
64; CHECK-SPIRV: OpName %[[#r61:]] "r61"
65; CHECK-SPIRV: OpName %[[#r62:]] "r62"
66; CHECK-SPIRV: OpName %[[#r63:]] "r63"
67; CHECK-SPIRV: OpName %[[#r64:]] "r64"
68; CHECK-SPIRV: OpName %[[#r65:]] "r65"
69; CHECK-SPIRV: OpName %[[#r66:]] "r66"
70; CHECK-SPIRV: OpName %[[#r67:]] "r67"
71; CHECK-SPIRV: OpName %[[#r68:]] "r68"
72; CHECK-SPIRV: OpName %[[#r69:]] "r69"
73; CHECK-SPIRV: OpName %[[#r70:]] "r70"
74; CHECK-SPIRV: OpName %[[#r71:]] "r71"
75; CHECK-SPIRV: OpName %[[#r72:]] "r72"
76; CHECK-SPIRV: OpName %[[#r73:]] "r73"
77; CHECK-SPIRV: OpName %[[#r74:]] "r74"
78; CHECK-SPIRV: OpName %[[#r75:]] "r75"
79; CHECK-SPIRV: OpName %[[#r76:]] "r76"
80; CHECK-SPIRV: OpName %[[#r77:]] "r77"
81; CHECK-SPIRV: OpName %[[#r78:]] "r78"
82; CHECK-SPIRV: OpName %[[#r79:]] "r79"
83; CHECK-SPIRV: OpName %[[#r80:]] "r80"
84; CHECK-SPIRV: OpName %[[#r81:]] "r81"
85; CHECK-SPIRV: OpName %[[#r82:]] "r82"
86; CHECK-SPIRV: OpName %[[#r83:]] "r83"
87; CHECK-SPIRV: OpName %[[#r84:]] "r84"
88; CHECK-SPIRV: OpName %[[#r85:]] "r85"
89; CHECK-SPIRV: OpName %[[#r86:]] "r86"
90; CHECK-SPIRV: OpName %[[#r87:]] "r87"
91; CHECK-SPIRV: OpName %[[#r88:]] "r88"
92; CHECK-SPIRV: OpName %[[#r89:]] "r89"
93; CHECK-SPIRV: OpName %[[#r90:]] "r90"
94; CHECK-SPIRV-NOT: OpDecorate %{{.*}} FPFastMathMode
95; CHECK-SPIRV: %[[#bool:]] = OpTypeBool
96; CHECK-SPIRV: %[[#r1]] = OpFOrdEqual %[[#bool]]
97; CHECK-SPIRV: %[[#r2]] = OpFOrdEqual %[[#bool]]
98; CHECK-SPIRV: %[[#r3]] = OpFOrdEqual %[[#bool]]
99; CHECK-SPIRV: %[[#r4]] = OpFOrdEqual %[[#bool]]
100; CHECK-SPIRV: %[[#r5]] = OpFOrdEqual %[[#bool]]
101; CHECK-SPIRV: %[[#r6]] = OpFOrdEqual %[[#bool]]
102; CHECK-SPIRV: %[[#r7]] = OpFOrdEqual %[[#bool]]
103; CHECK-SPIRV: %[[#r8]] = OpFOrdNotEqual %[[#bool]]
104; CHECK-SPIRV: %[[#r9]] = OpFOrdNotEqual %[[#bool]]
105; CHECK-SPIRV: %[[#r10]] = OpFOrdNotEqual %[[#bool]]
106; CHECK-SPIRV: %[[#r11]] = OpFOrdNotEqual %[[#bool]]
107; CHECK-SPIRV: %[[#r12]] = OpFOrdNotEqual %[[#bool]]
108; CHECK-SPIRV: %[[#r13]] = OpFOrdNotEqual %[[#bool]]
109; CHECK-SPIRV: %[[#r14]] = OpFOrdNotEqual %[[#bool]]
110; CHECK-SPIRV: %[[#r15]] = OpFOrdLessThan %[[#bool]]
111; CHECK-SPIRV: %[[#r16]] = OpFOrdLessThan %[[#bool]]
112; CHECK-SPIRV: %[[#r17]] = OpFOrdLessThan %[[#bool]]
113; CHECK-SPIRV: %[[#r18]] = OpFOrdLessThan %[[#bool]]
114; CHECK-SPIRV: %[[#r19]] = OpFOrdLessThan %[[#bool]]
115; CHECK-SPIRV: %[[#r20]] = OpFOrdLessThan %[[#bool]]
116; CHECK-SPIRV: %[[#r21]] = OpFOrdLessThan %[[#bool]]
117; CHECK-SPIRV: %[[#r22]] = OpFOrdGreaterThan %[[#bool]]
118; CHECK-SPIRV: %[[#r23]] = OpFOrdGreaterThan %[[#bool]]
119; CHECK-SPIRV: %[[#r24]] = OpFOrdGreaterThan %[[#bool]]
120; CHECK-SPIRV: %[[#r25]] = OpFOrdGreaterThan %[[#bool]]
121; CHECK-SPIRV: %[[#r26]] = OpFOrdGreaterThan %[[#bool]]
122; CHECK-SPIRV: %[[#r27]] = OpFOrdGreaterThan %[[#bool]]
123; CHECK-SPIRV: %[[#r28]] = OpFOrdGreaterThan %[[#bool]]
124; CHECK-SPIRV: %[[#r29]] = OpFOrdLessThanEqual %[[#bool]]
125; CHECK-SPIRV: %[[#r30]] = OpFOrdLessThanEqual %[[#bool]]
126; CHECK-SPIRV: %[[#r31]] = OpFOrdLessThanEqual %[[#bool]]
127; CHECK-SPIRV: %[[#r32]] = OpFOrdLessThanEqual %[[#bool]]
128; CHECK-SPIRV: %[[#r33]] = OpFOrdLessThanEqual %[[#bool]]
129; CHECK-SPIRV: %[[#r34]] = OpFOrdLessThanEqual %[[#bool]]
130; CHECK-SPIRV: %[[#r35]] = OpFOrdLessThanEqual %[[#bool]]
131; CHECK-SPIRV: %[[#r36]] = OpFOrdGreaterThanEqual %[[#bool]]
132; CHECK-SPIRV: %[[#r37]] = OpFOrdGreaterThanEqual %[[#bool]]
133; CHECK-SPIRV: %[[#r38]] = OpFOrdGreaterThanEqual %[[#bool]]
134; CHECK-SPIRV: %[[#r39]] = OpFOrdGreaterThanEqual %[[#bool]]
135; CHECK-SPIRV: %[[#r40]] = OpFOrdGreaterThanEqual %[[#bool]]
136; CHECK-SPIRV: %[[#r41]] = OpFOrdGreaterThanEqual %[[#bool]]
137; CHECK-SPIRV: %[[#r42]] = OpFOrdGreaterThanEqual %[[#bool]]
138; CHECK-SPIRV: %[[#r43]] = OpOrdered %[[#bool]]
139; CHECK-SPIRV: %[[#r44]] = OpOrdered %[[#bool]]
140; CHECK-SPIRV: %[[#r45]] = OpOrdered %[[#bool]]
141; CHECK-SPIRV: %[[#r46]] = OpFUnordEqual %[[#bool]]
142; CHECK-SPIRV: %[[#r47]] = OpFUnordEqual %[[#bool]]
143; CHECK-SPIRV: %[[#r48]] = OpFUnordEqual %[[#bool]]
144; CHECK-SPIRV: %[[#r49]] = OpFUnordEqual %[[#bool]]
145; CHECK-SPIRV: %[[#r50]] = OpFUnordEqual %[[#bool]]
146; CHECK-SPIRV: %[[#r51]] = OpFUnordEqual %[[#bool]]
147; CHECK-SPIRV: %[[#r52]] = OpFUnordEqual %[[#bool]]
148; CHECK-SPIRV: %[[#r53]] = OpFUnordNotEqual %[[#bool]]
149; CHECK-SPIRV: %[[#r54]] = OpFUnordNotEqual %[[#bool]]
150; CHECK-SPIRV: %[[#r55]] = OpFUnordNotEqual %[[#bool]]
151; CHECK-SPIRV: %[[#r56]] = OpFUnordNotEqual %[[#bool]]
152; CHECK-SPIRV: %[[#r57]] = OpFUnordNotEqual %[[#bool]]
153; CHECK-SPIRV: %[[#r58]] = OpFUnordNotEqual %[[#bool]]
154; CHECK-SPIRV: %[[#r59]] = OpFUnordNotEqual %[[#bool]]
155; CHECK-SPIRV: %[[#r60]] = OpFUnordLessThan %[[#bool]]
156; CHECK-SPIRV: %[[#r61]] = OpFUnordLessThan %[[#bool]]
157; CHECK-SPIRV: %[[#r62]] = OpFUnordLessThan %[[#bool]]
158; CHECK-SPIRV: %[[#r63]] = OpFUnordLessThan %[[#bool]]
159; CHECK-SPIRV: %[[#r64]] = OpFUnordLessThan %[[#bool]]
160; CHECK-SPIRV: %[[#r65]] = OpFUnordLessThan %[[#bool]]
161; CHECK-SPIRV: %[[#r66]] = OpFUnordLessThan %[[#bool]]
162; CHECK-SPIRV: %[[#r67]] = OpFUnordGreaterThan %[[#bool]]
163; CHECK-SPIRV: %[[#r68]] = OpFUnordGreaterThan %[[#bool]]
164; CHECK-SPIRV: %[[#r69]] = OpFUnordGreaterThan %[[#bool]]
165; CHECK-SPIRV: %[[#r70]] = OpFUnordGreaterThan %[[#bool]]
166; CHECK-SPIRV: %[[#r71]] = OpFUnordGreaterThan %[[#bool]]
167; CHECK-SPIRV: %[[#r72]] = OpFUnordGreaterThan %[[#bool]]
168; CHECK-SPIRV: %[[#r73]] = OpFUnordGreaterThan %[[#bool]]
169; CHECK-SPIRV: %[[#r74]] = OpFUnordLessThanEqual %[[#bool]]
170; CHECK-SPIRV: %[[#r75]] = OpFUnordLessThanEqual %[[#bool]]
171; CHECK-SPIRV: %[[#r76]] = OpFUnordLessThanEqual %[[#bool]]
172; CHECK-SPIRV: %[[#r77]] = OpFUnordLessThanEqual %[[#bool]]
173; CHECK-SPIRV: %[[#r78]] = OpFUnordLessThanEqual %[[#bool]]
174; CHECK-SPIRV: %[[#r79]] = OpFUnordLessThanEqual %[[#bool]]
175; CHECK-SPIRV: %[[#r80]] = OpFUnordLessThanEqual %[[#bool]]
176; CHECK-SPIRV: %[[#r81]] = OpFUnordGreaterThanEqual %[[#bool]]
177; CHECK-SPIRV: %[[#r82]] = OpFUnordGreaterThanEqual %[[#bool]]
178; CHECK-SPIRV: %[[#r83]] = OpFUnordGreaterThanEqual %[[#bool]]
179; CHECK-SPIRV: %[[#r84]] = OpFUnordGreaterThanEqual %[[#bool]]
180; CHECK-SPIRV: %[[#r85]] = OpFUnordGreaterThanEqual %[[#bool]]
181; CHECK-SPIRV: %[[#r86]] = OpFUnordGreaterThanEqual %[[#bool]]
182; CHECK-SPIRV: %[[#r87]] = OpFUnordGreaterThanEqual %[[#bool]]
183; CHECK-SPIRV: %[[#r88]] = OpUnordered %[[#bool]]
184; CHECK-SPIRV: %[[#r89]] = OpUnordered %[[#bool]]
185; CHECK-SPIRV: %[[#r90]] = OpUnordered %[[#bool]]
186
187define spir_kernel void @testFCmp(float %a, float %b) local_unnamed_addr {
188entry:
189  %r1 = fcmp oeq float %a, %b
190  %r2 = fcmp nnan oeq float %a, %b
191  %r3 = fcmp ninf oeq float %a, %b
192  %r4 = fcmp nsz oeq float %a, %b
193  %r5 = fcmp arcp oeq float %a, %b
194  %r6 = fcmp fast oeq float %a, %b
195  %r7 = fcmp nnan ninf oeq float %a, %b
196  %r8 = fcmp one float %a, %b
197  %r9 = fcmp nnan one float %a, %b
198  %r10 = fcmp ninf one float %a, %b
199  %r11 = fcmp nsz one float %a, %b
200  %r12 = fcmp arcp one float %a, %b
201  %r13 = fcmp fast one float %a, %b
202  %r14 = fcmp nnan ninf one float %a, %b
203  %r15 = fcmp olt float %a, %b
204  %r16 = fcmp nnan olt float %a, %b
205  %r17 = fcmp ninf olt float %a, %b
206  %r18 = fcmp nsz olt float %a, %b
207  %r19 = fcmp arcp olt float %a, %b
208  %r20 = fcmp fast olt float %a, %b
209  %r21 = fcmp nnan ninf olt float %a, %b
210  %r22 = fcmp ogt float %a, %b
211  %r23 = fcmp nnan ogt float %a, %b
212  %r24 = fcmp ninf ogt float %a, %b
213  %r25 = fcmp nsz ogt float %a, %b
214  %r26 = fcmp arcp ogt float %a, %b
215  %r27 = fcmp fast ogt float %a, %b
216  %r28 = fcmp nnan ninf ogt float %a, %b
217  %r29 = fcmp ole float %a, %b
218  %r30 = fcmp nnan ole float %a, %b
219  %r31 = fcmp ninf ole float %a, %b
220  %r32 = fcmp nsz ole float %a, %b
221  %r33 = fcmp arcp ole float %a, %b
222  %r34 = fcmp fast ole float %a, %b
223  %r35 = fcmp nnan ninf ole float %a, %b
224  %r36 = fcmp oge float %a, %b
225  %r37 = fcmp nnan oge float %a, %b
226  %r38 = fcmp ninf oge float %a, %b
227  %r39 = fcmp nsz oge float %a, %b
228  %r40 = fcmp arcp oge float %a, %b
229  %r41 = fcmp fast oge float %a, %b
230  %r42 = fcmp nnan ninf oge float %a, %b
231  %r43 = fcmp ord float %a, %b
232  %r44 = fcmp ninf ord float %a, %b
233  %r45 = fcmp nsz ord float %a, %b
234  %r46 = fcmp ueq float %a, %b
235  %r47 = fcmp nnan ueq float %a, %b
236  %r48 = fcmp ninf ueq float %a, %b
237  %r49 = fcmp nsz ueq float %a, %b
238  %r50 = fcmp arcp ueq float %a, %b
239  %r51 = fcmp fast ueq float %a, %b
240  %r52 = fcmp nnan ninf ueq float %a, %b
241  %r53 = fcmp une float %a, %b
242  %r54 = fcmp nnan une float %a, %b
243  %r55 = fcmp ninf une float %a, %b
244  %r56 = fcmp nsz une float %a, %b
245  %r57 = fcmp arcp une float %a, %b
246  %r58 = fcmp fast une float %a, %b
247  %r59 = fcmp nnan ninf une float %a, %b
248  %r60 = fcmp ult float %a, %b
249  %r61 = fcmp nnan ult float %a, %b
250  %r62 = fcmp ninf ult float %a, %b
251  %r63 = fcmp nsz ult float %a, %b
252  %r64 = fcmp arcp ult float %a, %b
253  %r65 = fcmp fast ult float %a, %b
254  %r66 = fcmp nnan ninf ult float %a, %b
255  %r67 = fcmp ugt float %a, %b
256  %r68 = fcmp nnan ugt float %a, %b
257  %r69 = fcmp ninf ugt float %a, %b
258  %r70 = fcmp nsz ugt float %a, %b
259  %r71 = fcmp arcp ugt float %a, %b
260  %r72 = fcmp fast ugt float %a, %b
261  %r73 = fcmp nnan ninf ugt float %a, %b
262  %r74 = fcmp ule float %a, %b
263  %r75 = fcmp nnan ule float %a, %b
264  %r76 = fcmp ninf ule float %a, %b
265  %r77 = fcmp nsz ule float %a, %b
266  %r78 = fcmp arcp ule float %a, %b
267  %r79 = fcmp fast ule float %a, %b
268  %r80 = fcmp nnan ninf ule float %a, %b
269  %r81 = fcmp uge float %a, %b
270  %r82 = fcmp nnan uge float %a, %b
271  %r83 = fcmp ninf uge float %a, %b
272  %r84 = fcmp nsz uge float %a, %b
273  %r85 = fcmp arcp uge float %a, %b
274  %r86 = fcmp fast uge float %a, %b
275  %r87 = fcmp nnan ninf uge float %a, %b
276  %r88 = fcmp uno float %a, %b
277  %r89 = fcmp ninf uno float %a, %b
278  %r90 = fcmp nsz uno float %a, %b
279  ret void
280}
281