Lines Matching refs:SSE2
2 …: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE2
7 ; SSE2-LABEL: trunc_unsigned_f32:
8 ; SSE2: # %bb.0:
9 ; SSE2-NEXT: cvttss2si %xmm0, %rax
10 ; SSE2-NEXT: movl %eax, %eax
11 ; SSE2-NEXT: xorps %xmm0, %xmm0
12 ; SSE2-NEXT: cvtsi2ss %rax, %xmm0
13 ; SSE2-NEXT: retq
30 ; SSE2-LABEL: trunc_unsigned_f64:
31 ; SSE2: # %bb.0:
32 ; SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
33 ; SSE2-NEXT: movapd %xmm0, %xmm2
34 ; SSE2-NEXT: subsd %xmm1, %xmm2
35 ; SSE2-NEXT: cvttsd2si %xmm2, %rax
36 ; SSE2-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000
37 ; SSE2-NEXT: xorq %rax, %rcx
38 ; SSE2-NEXT: cvttsd2si %xmm0, %rax
39 ; SSE2-NEXT: ucomisd %xmm1, %xmm0
40 ; SSE2-NEXT: cmovaeq %rcx, %rax
41 ; SSE2-NEXT: movq %rax, %xmm1
42 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
43 ; SSE2-NEXT: subpd {{.*}}(%rip), %xmm1
44 ; SSE2-NEXT: movapd %xmm1, %xmm0
45 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1]
46 ; SSE2-NEXT: addsd %xmm1, %xmm0
47 ; SSE2-NEXT: retq
64 ; SSE2-LABEL: trunc_unsigned_v4f32:
65 ; SSE2: # %bb.0:
66 ; SSE2-NEXT: movaps {{.*#+}} xmm2 = [2.14748365E+9,2.14748365E+9,2.14748365E+9,2.14748365E+9]
67 ; SSE2-NEXT: movaps %xmm0, %xmm1
68 ; SSE2-NEXT: cmpltps %xmm2, %xmm1
69 ; SSE2-NEXT: cvttps2dq %xmm0, %xmm3
70 ; SSE2-NEXT: subps %xmm2, %xmm0
71 ; SSE2-NEXT: cvttps2dq %xmm0, %xmm0
72 ; SSE2-NEXT: xorps {{.*}}(%rip), %xmm0
73 ; SSE2-NEXT: andps %xmm1, %xmm3
74 ; SSE2-NEXT: andnps %xmm0, %xmm1
75 ; SSE2-NEXT: orps %xmm3, %xmm1
76 ; SSE2-NEXT: movaps {{.*#+}} xmm0 = [65535,65535,65535,65535]
77 ; SSE2-NEXT: andps %xmm1, %xmm0
78 ; SSE2-NEXT: orps {{.*}}(%rip), %xmm0
79 ; SSE2-NEXT: psrld $16, %xmm1
80 ; SSE2-NEXT: por {{.*}}(%rip), %xmm1
81 ; SSE2-NEXT: subps {{.*}}(%rip), %xmm1
82 ; SSE2-NEXT: addps %xmm0, %xmm1
83 ; SSE2-NEXT: movaps %xmm1, %xmm0
84 ; SSE2-NEXT: retq
101 ; SSE2-LABEL: trunc_unsigned_v2f64:
102 ; SSE2: # %bb.0:
103 ; SSE2-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero
104 ; SSE2-NEXT: movapd %xmm0, %xmm1
105 ; SSE2-NEXT: subsd %xmm2, %xmm1
106 ; SSE2-NEXT: cvttsd2si %xmm1, %rax
107 ; SSE2-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000
108 ; SSE2-NEXT: xorq %rcx, %rax
109 ; SSE2-NEXT: cvttsd2si %xmm0, %rdx
110 ; SSE2-NEXT: ucomisd %xmm2, %xmm0
111 ; SSE2-NEXT: cmovaeq %rax, %rdx
112 ; SSE2-NEXT: movq %rdx, %xmm1
113 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
114 ; SSE2-NEXT: movapd %xmm0, %xmm3
115 ; SSE2-NEXT: subsd %xmm2, %xmm3
116 ; SSE2-NEXT: cvttsd2si %xmm3, %rax
117 ; SSE2-NEXT: xorq %rcx, %rax
118 ; SSE2-NEXT: cvttsd2si %xmm0, %rcx
119 ; SSE2-NEXT: ucomisd %xmm2, %xmm0
120 ; SSE2-NEXT: cmovaeq %rax, %rcx
121 ; SSE2-NEXT: movq %rcx, %xmm0
122 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
123 ; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [4294967295,4294967295]
124 ; SSE2-NEXT: pand %xmm1, %xmm0
125 ; SSE2-NEXT: por {{.*}}(%rip), %xmm0
126 ; SSE2-NEXT: psrlq $32, %xmm1
127 ; SSE2-NEXT: por {{.*}}(%rip), %xmm1
128 ; SSE2-NEXT: subpd {{.*}}(%rip), %xmm1
129 ; SSE2-NEXT: addpd %xmm0, %xmm1
130 ; SSE2-NEXT: movapd %xmm1, %xmm0
131 ; SSE2-NEXT: retq
148 ; SSE2-LABEL: trunc_unsigned_v4f64:
149 ; SSE2: # %bb.0:
150 ; SSE2-NEXT: movapd %xmm1, %xmm2
151 ; SSE2-NEXT: movsd {{.*#+}} xmm3 = mem[0],zero
152 ; SSE2-NEXT: subsd %xmm3, %xmm1
153 ; SSE2-NEXT: cvttsd2si %xmm1, %rcx
154 ; SSE2-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000
155 ; SSE2-NEXT: xorq %rax, %rcx
156 ; SSE2-NEXT: cvttsd2si %xmm2, %rdx
157 ; SSE2-NEXT: ucomisd %xmm3, %xmm2
158 ; SSE2-NEXT: cmovaeq %rcx, %rdx
159 ; SSE2-NEXT: movq %rdx, %xmm1
160 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
161 ; SSE2-NEXT: movapd %xmm2, %xmm4
162 ; SSE2-NEXT: subsd %xmm3, %xmm4
163 ; SSE2-NEXT: cvttsd2si %xmm4, %rcx
164 ; SSE2-NEXT: xorq %rax, %rcx
165 ; SSE2-NEXT: cvttsd2si %xmm2, %rdx
166 ; SSE2-NEXT: ucomisd %xmm3, %xmm2
167 ; SSE2-NEXT: cmovaeq %rcx, %rdx
168 ; SSE2-NEXT: movq %rdx, %xmm2
169 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
170 ; SSE2-NEXT: movapd %xmm0, %xmm2
171 ; SSE2-NEXT: subsd %xmm3, %xmm2
172 ; SSE2-NEXT: cvttsd2si %xmm2, %rcx
173 ; SSE2-NEXT: xorq %rax, %rcx
174 ; SSE2-NEXT: cvttsd2si %xmm0, %rdx
175 ; SSE2-NEXT: ucomisd %xmm3, %xmm0
176 ; SSE2-NEXT: cmovaeq %rcx, %rdx
177 ; SSE2-NEXT: movq %rdx, %xmm2
178 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
179 ; SSE2-NEXT: movapd %xmm0, %xmm4
180 ; SSE2-NEXT: subsd %xmm3, %xmm4
181 ; SSE2-NEXT: cvttsd2si %xmm4, %rcx
182 ; SSE2-NEXT: xorq %rax, %rcx
183 ; SSE2-NEXT: cvttsd2si %xmm0, %rax
184 ; SSE2-NEXT: ucomisd %xmm3, %xmm0
185 ; SSE2-NEXT: cmovaeq %rcx, %rax
186 ; SSE2-NEXT: movq %rax, %xmm0
187 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]
188 ; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [4294967295,4294967295]
189 ; SSE2-NEXT: movdqa %xmm2, %xmm3
190 ; SSE2-NEXT: pand %xmm0, %xmm3
191 ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [4841369599423283200,4841369599423283200]
192 ; SSE2-NEXT: por %xmm4, %xmm3
193 ; SSE2-NEXT: psrlq $32, %xmm2
194 ; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [4985484787499139072,4985484787499139072]
195 ; SSE2-NEXT: por %xmm5, %xmm2
196 ; SSE2-NEXT: movapd {{.*#+}} xmm6 = [1.9342813118337666E+25,1.9342813118337666E+25]
197 ; SSE2-NEXT: subpd %xmm6, %xmm2
198 ; SSE2-NEXT: addpd %xmm3, %xmm2
199 ; SSE2-NEXT: pand %xmm1, %xmm0
200 ; SSE2-NEXT: por %xmm4, %xmm0
201 ; SSE2-NEXT: psrlq $32, %xmm1
202 ; SSE2-NEXT: por %xmm5, %xmm1
203 ; SSE2-NEXT: subpd %xmm6, %xmm1
204 ; SSE2-NEXT: addpd %xmm0, %xmm1
205 ; SSE2-NEXT: movapd %xmm2, %xmm0
206 ; SSE2-NEXT: retq
243 ; SSE2-LABEL: trunc_signed_f32_nsz:
244 ; SSE2: # %bb.0:
245 ; SSE2-NEXT: cvttps2dq %xmm0, %xmm0
246 ; SSE2-NEXT: cvtdq2ps %xmm0, %xmm0
247 ; SSE2-NEXT: retq
281 ; SSE2-LABEL: trunc_signed32_f64_nsz:
282 ; SSE2: # %bb.0:
283 ; SSE2-NEXT: cvttpd2dq %xmm0, %xmm0
284 ; SSE2-NEXT: cvtdq2pd %xmm0, %xmm0
285 ; SSE2-NEXT: retq
388 ; SSE2-LABEL: trunc_signed_f64_nsz:
389 ; SSE2: # %bb.0:
390 ; SSE2-NEXT: cvttsd2si %xmm0, %rax
391 ; SSE2-NEXT: xorps %xmm0, %xmm0
392 ; SSE2-NEXT: cvtsi2sd %rax, %xmm0
393 ; SSE2-NEXT: retq
410 ; SSE2-LABEL: trunc_signed_v4f32_nsz:
411 ; SSE2: # %bb.0:
412 ; SSE2-NEXT: cvttps2dq %xmm0, %xmm0
413 ; SSE2-NEXT: cvtdq2ps %xmm0, %xmm0
414 ; SSE2-NEXT: retq
431 ; SSE2-LABEL: trunc_signed_v2f64_nsz:
432 ; SSE2: # %bb.0:
433 ; SSE2-NEXT: cvttsd2si %xmm0, %rax
434 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
435 ; SSE2-NEXT: cvttsd2si %xmm0, %rcx
436 ; SSE2-NEXT: xorps %xmm0, %xmm0
437 ; SSE2-NEXT: cvtsi2sd %rax, %xmm0
438 ; SSE2-NEXT: cvtsi2sd %rcx, %xmm1
439 ; SSE2-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
440 ; SSE2-NEXT: retq
457 ; SSE2-LABEL: trunc_signed_v4f64_nsz:
458 ; SSE2: # %bb.0:
459 ; SSE2-NEXT: cvttsd2si %xmm1, %rax
460 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1,1]
461 ; SSE2-NEXT: cvttsd2si %xmm1, %rcx
462 ; SSE2-NEXT: cvttsd2si %xmm0, %rdx
463 ; SSE2-NEXT: unpckhpd {{.*#+}} xmm0 = xmm0[1,1]
464 ; SSE2-NEXT: cvttsd2si %xmm0, %rsi
465 ; SSE2-NEXT: xorps %xmm0, %xmm0
466 ; SSE2-NEXT: cvtsi2sd %rdx, %xmm0
467 ; SSE2-NEXT: xorps %xmm1, %xmm1
468 ; SSE2-NEXT: cvtsi2sd %rsi, %xmm1
469 ; SSE2-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
470 ; SSE2-NEXT: xorps %xmm1, %xmm1
471 ; SSE2-NEXT: cvtsi2sd %rax, %xmm1
472 ; SSE2-NEXT: cvtsi2sd %rcx, %xmm2
473 ; SSE2-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm2[0]
474 ; SSE2-NEXT: retq