Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: tests_lit/llvm2ice_tests/vector-fcmp.ll

Issue 2412053002: [SubZero] Implement Fcmp, ICmp, Cast and Select for vector type (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Rebase to master Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-align.ll ('k') | tests_lit/llvm2ice_tests/vector-icmp.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This file checks support for comparing vector values with the fcmp 1 ; This file checks support for comparing vector values with the fcmp
2 ; instruction. 2 ; instruction.
3 3
4 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 | FileCheck %s 4 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 | FileCheck %s
5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 | FileCheck %s 5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 | FileCheck %s
6 6
7 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
8 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target mips32\
9 ; RUN: -i %s --args -O2 --skip-unimplemented \
10 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
11 ; RUN: --command FileCheck --check-prefix MIPS32 %s
12
7 ; Check that sext elimination occurs when the result of the comparison 13 ; Check that sext elimination occurs when the result of the comparison
8 ; instruction is alrady sign extended. Sign extension to 4 x i32 uses 14 ; instruction is alrady sign extended. Sign extension to 4 x i32 uses
9 ; the pslld instruction. 15 ; the pslld instruction.
10 define internal <4 x i32> @sextElimination(<4 x float> %a, <4 x float> %b) { 16 define internal <4 x i32> @sextElimination(<4 x float> %a, <4 x float> %b) {
11 entry: 17 entry:
12 %res.trunc = fcmp oeq <4 x float> %a, %b 18 %res.trunc = fcmp oeq <4 x float> %a, %b
13 %res = sext <4 x i1> %res.trunc to <4 x i32> 19 %res = sext <4 x i1> %res.trunc to <4 x i32>
14 ret <4 x i32> %res 20 ret <4 x i32> %res
15 ; CHECK-LABEL: sextElimination 21 ; CHECK-LABEL: sextElimination
16 ; CHECK: cmpeqps 22 ; CHECK: cmpeqps
17 ; CHECK-NOT: pslld 23 ; CHECK-NOT: pslld
18 } 24 }
25 ; MIPS32-LABEL: sextElimination
26 ; MIPS32: c.eq.s
27 ; MIPS32: li [[R:.*]],1
28 ; MIPS32: movf [[R]],zero,$fcc0
29 ; MIPS32: c.eq.s
30 ; MIPS32: li [[R:.*]],1
31 ; MIPS32: movf [[R]],zero,$fcc0
32 ; MIPS32: c.eq.s
33 ; MIPS32: li [[R:.*]],1
34 ; MIPS32: movf [[R]],zero,$fcc0
35 ; MIPS32: c.eq.s
36 ; MIPS32: li [[R:.*]],1
37 ; MIPS32: movf [[R]],zero,$fcc0
19 38
20 define internal <4 x i32> @fcmpFalseVector(<4 x float> %a, <4 x float> %b) { 39 define internal <4 x i32> @fcmpFalseVector(<4 x float> %a, <4 x float> %b) {
21 entry: 40 entry:
22 %res.trunc = fcmp false <4 x float> %a, %b 41 %res.trunc = fcmp false <4 x float> %a, %b
23 %res = sext <4 x i1> %res.trunc to <4 x i32> 42 %res = sext <4 x i1> %res.trunc to <4 x i32>
24 ret <4 x i32> %res 43 ret <4 x i32> %res
25 ; CHECK-LABEL: fcmpFalseVector 44 ; CHECK-LABEL: fcmpFalseVector
26 ; CHECK: pxor 45 ; CHECK: pxor
27 } 46 }
47 ; MIPS32-LABEL: fcmpFalseVector
48 ; MIPS32: li v0,0
49 ; MIPS32: li v1,0
50 ; MIPS32: li a0,0
51 ; MIPS32: li a1,0
28 52
29 define internal <4 x i32> @fcmpOeqVector(<4 x float> %a, <4 x float> %b) { 53 define internal <4 x i32> @fcmpOeqVector(<4 x float> %a, <4 x float> %b) {
30 entry: 54 entry:
31 %res.trunc = fcmp oeq <4 x float> %a, %b 55 %res.trunc = fcmp oeq <4 x float> %a, %b
32 %res = sext <4 x i1> %res.trunc to <4 x i32> 56 %res = sext <4 x i1> %res.trunc to <4 x i32>
33 ret <4 x i32> %res 57 ret <4 x i32> %res
34 ; CHECK-LABEL: fcmpOeqVector 58 ; CHECK-LABEL: fcmpOeqVector
35 ; CHECK: cmpeqps 59 ; CHECK: cmpeqps
36 } 60 }
61 ; MIPS32-LABEL: fcmpOeqVector
62 ; MIPS32: c.eq.s
63 ; MIPS32: li [[R:.*]],1
64 ; MIPS32: movf [[R]],zero,$fcc0
65 ; MIPS32: c.eq.s
66 ; MIPS32: li [[R:.*]],1
67 ; MIPS32: movf [[R]],zero,$fcc0
68 ; MIPS32: c.eq.s
69 ; MIPS32: li [[R:.*]],1
70 ; MIPS32: movf [[R]],zero,$fcc0
71 ; MIPS32: c.eq.s
72 ; MIPS32: li [[R:.*]],1
73 ; MIPS32: movf [[R]],zero,$fcc0
37 74
38 define internal <4 x i32> @fcmpOgeVector(<4 x float> %a, <4 x float> %b) { 75 define internal <4 x i32> @fcmpOgeVector(<4 x float> %a, <4 x float> %b) {
39 entry: 76 entry:
40 %res.trunc = fcmp oge <4 x float> %a, %b 77 %res.trunc = fcmp oge <4 x float> %a, %b
41 %res = sext <4 x i1> %res.trunc to <4 x i32> 78 %res = sext <4 x i1> %res.trunc to <4 x i32>
42 ret <4 x i32> %res 79 ret <4 x i32> %res
43 ; CHECK-LABEL: fcmpOgeVector 80 ; CHECK-LABEL: fcmpOgeVector
44 ; CHECK: cmpleps 81 ; CHECK: cmpleps
45 } 82 }
83 ; MIPS32-LABEL: fcmpOgeVector
84 ; MIPS32: c.ult.s
85 ; MIPS32: li [[R:.*]],1
86 ; MIPS32: movt [[R]],zero,$fcc0
87 ; MIPS32: c.ult.s
88 ; MIPS32: li [[R:.*]],1
89 ; MIPS32: movt [[R]],zero,$fcc0
90 ; MIPS32: c.ult.s
91 ; MIPS32: li [[R:.*]],1
92 ; MIPS32: movt [[R]],zero,$fcc0
93 ; MIPS32: c.ult.s
94 ; MIPS32: li [[R:.*]],1
95 ; MIPS32: movt [[R]],zero,$fcc0
46 96
47 define internal <4 x i32> @fcmpOgtVector(<4 x float> %a, <4 x float> %b) { 97 define internal <4 x i32> @fcmpOgtVector(<4 x float> %a, <4 x float> %b) {
48 entry: 98 entry:
49 %res.trunc = fcmp ogt <4 x float> %a, %b 99 %res.trunc = fcmp ogt <4 x float> %a, %b
50 %res = sext <4 x i1> %res.trunc to <4 x i32> 100 %res = sext <4 x i1> %res.trunc to <4 x i32>
51 ret <4 x i32> %res 101 ret <4 x i32> %res
52 ; CHECK-LABEL: fcmpOgtVector 102 ; CHECK-LABEL: fcmpOgtVector
53 ; CHECK: cmpltps 103 ; CHECK: cmpltps
54 } 104 }
105 ; MIPS32-LABEL: fcmpOgtVector
106 ; MIPS32: c.ule.s
107 ; MIPS32: li [[R:.*]],1
108 ; MIPS32: movt [[R]],zero,$fcc0
109 ; MIPS32: c.ule.s
110 ; MIPS32: li [[R:.*]],1
111 ; MIPS32: movt [[R]],zero,$fcc0
112 ; MIPS32: c.ule.s
113 ; MIPS32: li [[R:.*]],1
114 ; MIPS32: movt [[R]],zero,$fcc0
115 ; MIPS32: c.ule.s
116 ; MIPS32: li [[R:.*]],1
117 ; MIPS32: movt [[R]],zero,$fcc0
55 118
56 define internal <4 x i32> @fcmpOleVector(<4 x float> %a, <4 x float> %b) { 119 define internal <4 x i32> @fcmpOleVector(<4 x float> %a, <4 x float> %b) {
57 entry: 120 entry:
58 %res.trunc = fcmp ole <4 x float> %a, %b 121 %res.trunc = fcmp ole <4 x float> %a, %b
59 %res = sext <4 x i1> %res.trunc to <4 x i32> 122 %res = sext <4 x i1> %res.trunc to <4 x i32>
60 ret <4 x i32> %res 123 ret <4 x i32> %res
61 ; CHECK-LABEL: fcmpOleVector 124 ; CHECK-LABEL: fcmpOleVector
62 ; CHECK: cmpleps 125 ; CHECK: cmpleps
63 } 126 }
127 ; MIPS32-LABEL: fcmpOleVector
128 ; MIPS32: c.ole.s
129 ; MIPS32: li [[R:.*]],1
130 ; MIPS32: movf [[R]],zero,$fcc0
131 ; MIPS32: c.ole.s
132 ; MIPS32: li [[R:.*]],1
133 ; MIPS32: movf [[R]],zero,$fcc0
134 ; MIPS32: c.ole.s
135 ; MIPS32: li [[R:.*]],1
136 ; MIPS32: movf [[R]],zero,$fcc0
137 ; MIPS32: c.ole.s
138 ; MIPS32: li [[R:.*]],1
139 ; MIPS32: movf [[R]],zero,$fcc0
64 140
65 define internal <4 x i32> @fcmpOltVector(<4 x float> %a, <4 x float> %b) { 141 define internal <4 x i32> @fcmpOltVector(<4 x float> %a, <4 x float> %b) {
66 entry: 142 entry:
67 %res.trunc = fcmp olt <4 x float> %a, %b 143 %res.trunc = fcmp olt <4 x float> %a, %b
68 %res = sext <4 x i1> %res.trunc to <4 x i32> 144 %res = sext <4 x i1> %res.trunc to <4 x i32>
69 ret <4 x i32> %res 145 ret <4 x i32> %res
70 ; CHECK-LABEL: fcmpOltVector 146 ; CHECK-LABEL: fcmpOltVector
71 ; CHECK: cmpltps 147 ; CHECK: cmpltps
72 } 148 }
149 ; MIPS32-LABEL: fcmpOltVector
150 ; MIPS32: c.olt.s
151 ; MIPS32: li [[R:.*]],1
152 ; MIPS32: movf [[R]],zero,$fcc0
153 ; MIPS32: c.olt.s
154 ; MIPS32: li [[R:.*]],1
155 ; MIPS32: movf [[R]],zero,$fcc0
156 ; MIPS32: c.olt.s
157 ; MIPS32: li [[R:.*]],1
158 ; MIPS32: movf [[R]],zero,$fcc0
159 ; MIPS32: c.olt.s
160 ; MIPS32: li [[R:.*]],1
161 ; MIPS32: movf [[R]],zero,$fcc0
73 162
74 define internal <4 x i32> @fcmpOneVector(<4 x float> %a, <4 x float> %b) { 163 define internal <4 x i32> @fcmpOneVector(<4 x float> %a, <4 x float> %b) {
75 entry: 164 entry:
76 %res.trunc = fcmp one <4 x float> %a, %b 165 %res.trunc = fcmp one <4 x float> %a, %b
77 %res = sext <4 x i1> %res.trunc to <4 x i32> 166 %res = sext <4 x i1> %res.trunc to <4 x i32>
78 ret <4 x i32> %res 167 ret <4 x i32> %res
79 ; CHECK-LABEL: fcmpOneVector 168 ; CHECK-LABEL: fcmpOneVector
80 ; CHECK: cmpneqps 169 ; CHECK: cmpneqps
81 ; CHECK: cmpordps 170 ; CHECK: cmpordps
82 ; CHECK: pand 171 ; CHECK: pand
83 } 172 }
173 ; MIPS32-LABEL: fcmpOneVector
174 ; MIPS32: c.ueq.s
175 ; MIPS32: li [[R:.*]],1
176 ; MIPS32: movt [[R]],zero,$fcc0
177 ; MIPS32: c.ueq.s
178 ; MIPS32: li [[R:.*]],1
179 ; MIPS32: movt [[R]],zero,$fcc0
180 ; MIPS32: c.ueq.s
181 ; MIPS32: li [[R:.*]],1
182 ; MIPS32: movt [[R]],zero,$fcc0
183 ; MIPS32: c.ueq.s
184 ; MIPS32: li [[R:.*]],1
185 ; MIPS32: movt [[R]],zero,$fcc0
84 186
85 define internal <4 x i32> @fcmpOrdVector(<4 x float> %a, <4 x float> %b) { 187 define internal <4 x i32> @fcmpOrdVector(<4 x float> %a, <4 x float> %b) {
86 entry: 188 entry:
87 %res.trunc = fcmp ord <4 x float> %a, %b 189 %res.trunc = fcmp ord <4 x float> %a, %b
88 %res = sext <4 x i1> %res.trunc to <4 x i32> 190 %res = sext <4 x i1> %res.trunc to <4 x i32>
89 ret <4 x i32> %res 191 ret <4 x i32> %res
90 ; CHECK-LABEL: fcmpOrdVector 192 ; CHECK-LABEL: fcmpOrdVector
91 ; CHECK: cmpordps 193 ; CHECK: cmpordps
92 } 194 }
195 ; MIPS32-LABEL: fcmpOrdVector
196 ; MIPS32: c.un.s
197 ; MIPS32: li [[R:.*]],1
198 ; MIPS32: movt [[R]],zero,$fcc0
199 ; MIPS32: c.un.s
200 ; MIPS32: li [[R:.*]],1
201 ; MIPS32: movt [[R]],zero,$fcc0
202 ; MIPS32: c.un.s
203 ; MIPS32: li [[R:.*]],1
204 ; MIPS32: movt [[R]],zero,$fcc0
205 ; MIPS32: c.un.s
206 ; MIPS32: li [[R:.*]],1
207 ; MIPS32: movt [[R]],zero,$fcc0
93 208
94 define internal <4 x i32> @fcmpTrueVector(<4 x float> %a, <4 x float> %b) { 209 define internal <4 x i32> @fcmpTrueVector(<4 x float> %a, <4 x float> %b) {
95 entry: 210 entry:
96 %res.trunc = fcmp true <4 x float> %a, %b 211 %res.trunc = fcmp true <4 x float> %a, %b
97 %res = sext <4 x i1> %res.trunc to <4 x i32> 212 %res = sext <4 x i1> %res.trunc to <4 x i32>
98 ret <4 x i32> %res 213 ret <4 x i32> %res
99 ; CHECK-LABEL: fcmpTrueVector 214 ; CHECK-LABEL: fcmpTrueVector
100 ; CHECK: pcmpeqd 215 ; CHECK: pcmpeqd
101 } 216 }
217 ; MIPS32-LABEL: fcmpTrueVector
218 ; MIPS32: li v0,1
219 ; MIPS32: li v1,1
220 ; MIPS32: li a0,1
221 ; MIPS32: li a1,1
102 222
103 define internal <4 x i32> @fcmpUeqVector(<4 x float> %a, <4 x float> %b) { 223 define internal <4 x i32> @fcmpUeqVector(<4 x float> %a, <4 x float> %b) {
104 entry: 224 entry:
105 %res.trunc = fcmp ueq <4 x float> %a, %b 225 %res.trunc = fcmp ueq <4 x float> %a, %b
106 %res = sext <4 x i1> %res.trunc to <4 x i32> 226 %res = sext <4 x i1> %res.trunc to <4 x i32>
107 ret <4 x i32> %res 227 ret <4 x i32> %res
108 ; CHECK-LABEL: fcmpUeqVector 228 ; CHECK-LABEL: fcmpUeqVector
109 ; CHECK: cmpeqps 229 ; CHECK: cmpeqps
110 ; CHECK: cmpunordps 230 ; CHECK: cmpunordps
111 ; CHECK: por 231 ; CHECK: por
112 } 232 }
233 ; MIPS32-LABEL: fcmpUeqVector
234 ; MIPS32: c.ueq.s
235 ; MIPS32: li [[R:.*]],1
236 ; MIPS32: movf [[R]],zero,$fcc0
237 ; MIPS32: c.ueq.s
238 ; MIPS32: li [[R:.*]],1
239 ; MIPS32: movf [[R]],zero,$fcc0
240 ; MIPS32: c.ueq.s
241 ; MIPS32: li [[R:.*]],1
242 ; MIPS32: movf [[R]],zero,$fcc0
243 ; MIPS32: c.ueq.s
244 ; MIPS32: li [[R:.*]],1
245 ; MIPS32: movf [[R]],zero,$fcc0
113 246
114 define internal <4 x i32> @fcmpUgeVector(<4 x float> %a, <4 x float> %b) { 247 define internal <4 x i32> @fcmpUgeVector(<4 x float> %a, <4 x float> %b) {
115 entry: 248 entry:
116 %res.trunc = fcmp uge <4 x float> %a, %b 249 %res.trunc = fcmp uge <4 x float> %a, %b
117 %res = sext <4 x i1> %res.trunc to <4 x i32> 250 %res = sext <4 x i1> %res.trunc to <4 x i32>
118 ret <4 x i32> %res 251 ret <4 x i32> %res
119 ; CHECK-LABEL: fcmpUgeVector 252 ; CHECK-LABEL: fcmpUgeVector
120 ; CHECK: cmpnltps 253 ; CHECK: cmpnltps
121 } 254 }
255 ; MIPS32-LABEL: fcmpUgeVector
256 ; MIPS32: c.olt.s
257 ; MIPS32: li [[R:.*]],1
258 ; MIPS32: movt [[R]],zero,$fcc0
259 ; MIPS32: c.olt.s
260 ; MIPS32: li [[R:.*]],1
261 ; MIPS32: movt [[R]],zero,$fcc0
262 ; MIPS32: c.olt.s
263 ; MIPS32: li [[R:.*]],1
264 ; MIPS32: movt [[R]],zero,$fcc0
265 ; MIPS32: c.olt.s
266 ; MIPS32: li [[R:.*]],1
267 ; MIPS32: movt [[R]],zero,$fcc0
122 268
123 define internal <4 x i32> @fcmpUgtVector(<4 x float> %a, <4 x float> %b) { 269 define internal <4 x i32> @fcmpUgtVector(<4 x float> %a, <4 x float> %b) {
124 entry: 270 entry:
125 %res.trunc = fcmp ugt <4 x float> %a, %b 271 %res.trunc = fcmp ugt <4 x float> %a, %b
126 %res = sext <4 x i1> %res.trunc to <4 x i32> 272 %res = sext <4 x i1> %res.trunc to <4 x i32>
127 ret <4 x i32> %res 273 ret <4 x i32> %res
128 ; CHECK-LABEL: fcmpUgtVector 274 ; CHECK-LABEL: fcmpUgtVector
129 ; CHECK: cmpnleps 275 ; CHECK: cmpnleps
130 } 276 }
277 ; MIPS32-LABEL: fcmpUgtVector
278 ; MIPS32: c.ole.s
279 ; MIPS32: li [[R:.*]],1
280 ; MIPS32: movt [[R]],zero,$fcc0
281 ; MIPS32: c.ole.s
282 ; MIPS32: li [[R:.*]],1
283 ; MIPS32: movt [[R]],zero,$fcc0
284 ; MIPS32: c.ole.s
285 ; MIPS32: li [[R:.*]],1
286 ; MIPS32: movt [[R]],zero,$fcc0
287 ; MIPS32: c.ole.s
288 ; MIPS32: li [[R:.*]],1
289 ; MIPS32: movt [[R]],zero,$fcc0
131 290
132 define internal <4 x i32> @fcmpUleVector(<4 x float> %a, <4 x float> %b) { 291 define internal <4 x i32> @fcmpUleVector(<4 x float> %a, <4 x float> %b) {
133 entry: 292 entry:
134 %res.trunc = fcmp ule <4 x float> %a, %b 293 %res.trunc = fcmp ule <4 x float> %a, %b
135 %res = sext <4 x i1> %res.trunc to <4 x i32> 294 %res = sext <4 x i1> %res.trunc to <4 x i32>
136 ret <4 x i32> %res 295 ret <4 x i32> %res
137 ; CHECK-LABEL: fcmpUleVector 296 ; CHECK-LABEL: fcmpUleVector
138 ; CHECK: cmpnltps 297 ; CHECK: cmpnltps
139 } 298 }
299 ; MIPS32-LABEL: fcmpUleVector
300 ; MIPS32: c.ule.s
301 ; MIPS32: li [[R:.*]],1
302 ; MIPS32: movf [[R]],zero,$fcc0
303 ; MIPS32: c.ule.s
304 ; MIPS32: li [[R:.*]],1
305 ; MIPS32: movf [[R]],zero,$fcc0
306 ; MIPS32: c.ule.s
307 ; MIPS32: li [[R:.*]],1
308 ; MIPS32: movf [[R]],zero,$fcc0
309 ; MIPS32: c.ule.s
310 ; MIPS32: li [[R:.*]],1
311 ; MIPS32: movf [[R]],zero,$fcc0
140 312
141 define internal <4 x i32> @fcmpUltVector(<4 x float> %a, <4 x float> %b) { 313 define internal <4 x i32> @fcmpUltVector(<4 x float> %a, <4 x float> %b) {
142 entry: 314 entry:
143 %res.trunc = fcmp ult <4 x float> %a, %b 315 %res.trunc = fcmp ult <4 x float> %a, %b
144 %res = sext <4 x i1> %res.trunc to <4 x i32> 316 %res = sext <4 x i1> %res.trunc to <4 x i32>
145 ret <4 x i32> %res 317 ret <4 x i32> %res
146 ; CHECK-LABEL: fcmpUltVector 318 ; CHECK-LABEL: fcmpUltVector
147 ; CHECK: cmpnleps 319 ; CHECK: cmpnleps
148 } 320 }
321 ; MIPS32-LABEL: fcmpUltVector
322 ; MIPS32: c.ult.s
323 ; MIPS32: li [[R:.*]],1
324 ; MIPS32: movf [[R]],zero,$fcc0
325 ; MIPS32: c.ult.s
326 ; MIPS32: li [[R:.*]],1
327 ; MIPS32: movf [[R]],zero,$fcc0
328 ; MIPS32: c.ult.s
329 ; MIPS32: li [[R:.*]],1
330 ; MIPS32: movf [[R]],zero,$fcc0
331 ; MIPS32: c.ult.s
332 ; MIPS32: li [[R:.*]],1
333 ; MIPS32: movf [[R]],zero,$fcc0
149 334
150 define internal <4 x i32> @fcmpUneVector(<4 x float> %a, <4 x float> %b) { 335 define internal <4 x i32> @fcmpUneVector(<4 x float> %a, <4 x float> %b) {
151 entry: 336 entry:
152 %res.trunc = fcmp une <4 x float> %a, %b 337 %res.trunc = fcmp une <4 x float> %a, %b
153 %res = sext <4 x i1> %res.trunc to <4 x i32> 338 %res = sext <4 x i1> %res.trunc to <4 x i32>
154 ret <4 x i32> %res 339 ret <4 x i32> %res
155 ; CHECK-LABEL: fcmpUneVector 340 ; CHECK-LABEL: fcmpUneVector
156 ; CHECK: cmpneqps 341 ; CHECK: cmpneqps
157 } 342 }
343 ; MIPS32-LABEL: fcmpUneVector
344 ; MIPS32: c.eq.s
345 ; MIPS32: li [[R:.*]],1
346 ; MIPS32: movt [[R]],zero,$fcc0
347 ; MIPS32: c.eq.s
348 ; MIPS32: li [[R:.*]],1
349 ; MIPS32: movt [[R]],zero,$fcc0
350 ; MIPS32: c.eq.s
351 ; MIPS32: li [[R:.*]],1
352 ; MIPS32: movt [[R]],zero,$fcc0
353 ; MIPS32: c.eq.s
354 ; MIPS32: li [[R:.*]],1
355 ; MIPS32: movt [[R]],zero,$fcc0
158 356
159 define internal <4 x i32> @fcmpUnoVector(<4 x float> %a, <4 x float> %b) { 357 define internal <4 x i32> @fcmpUnoVector(<4 x float> %a, <4 x float> %b) {
160 entry: 358 entry:
161 %res.trunc = fcmp uno <4 x float> %a, %b 359 %res.trunc = fcmp uno <4 x float> %a, %b
162 %res = sext <4 x i1> %res.trunc to <4 x i32> 360 %res = sext <4 x i1> %res.trunc to <4 x i32>
163 ret <4 x i32> %res 361 ret <4 x i32> %res
164 ; CHECK-LABEL: fcmpUnoVector 362 ; CHECK-LABEL: fcmpUnoVector
165 ; CHECK: cmpunordps 363 ; CHECK: cmpunordps
166 } 364 }
365 ; MIPS32-LABEL: fcmpUnoVector
366 ; MIPS32: c.un.s
367 ; MIPS32: li [[R:.*]],1
368 ; MIPS32: movf [[R]],zero,$fcc0
369 ; MIPS32: c.un.s
370 ; MIPS32: li [[R:.*]],1
371 ; MIPS32: movf [[R]],zero,$fcc0
372 ; MIPS32: c.un.s
373 ; MIPS32: li [[R:.*]],1
374 ; MIPS32: movf [[R]],zero,$fcc0
375 ; MIPS32: c.un.s
376 ; MIPS32: li [[R:.*]],1
377 ; MIPS32: movf [[R]],zero,$fcc0
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-align.ll ('k') | tests_lit/llvm2ice_tests/vector-icmp.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698