Lines Matching refs:SSE41
4 … < %s -mtriple=i686-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE41,SSE41-32
5 … %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE41,SSE41-64
47 ; SSE41-LABEL: sitofp_v2i32_v2f32:
48 ; SSE41: # %bb.0:
49 ; SSE41-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero
50 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
51 ; SSE41-NEXT: ret{{[l|q]}}
75 ; SSE41-LABEL: uitofp_v2i32_v2f32:
76 ; SSE41: # %bb.0:
77 ; SSE41-NEXT: xorpd %xmm1, %xmm1
78 ; SSE41-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
79 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [4.503599627370496E+15,4.503599627370496E+15]
80 ; SSE41-NEXT: orpd %xmm1, %xmm0
81 ; SSE41-NEXT: subpd %xmm1, %xmm0
82 ; SSE41-NEXT: cvtpd2ps %xmm0, %xmm0
83 ; SSE41-NEXT: ret{{[l|q]}}
165 ; SSE41-32-LABEL: sitofp_v2i64_v2f32:
166 ; SSE41-32: # %bb.0:
167 ; SSE41-32-NEXT: pushl %ebp
168 ; SSE41-32-NEXT: .cfi_def_cfa_offset 8
169 ; SSE41-32-NEXT: .cfi_offset %ebp, -8
170 ; SSE41-32-NEXT: movl %esp, %ebp
171 ; SSE41-32-NEXT: .cfi_def_cfa_register %ebp
172 ; SSE41-32-NEXT: andl $-8, %esp
173 ; SSE41-32-NEXT: subl $24, %esp
174 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
175 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
176 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
177 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
178 ; SSE41-32-NEXT: fstps (%esp)
179 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
180 ; SSE41-32-NEXT: fstps {{[0-9]+}}(%esp)
181 ; SSE41-32-NEXT: wait
182 ; SSE41-32-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
183 ; SSE41-32-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
184 ; SSE41-32-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
185 ; SSE41-32-NEXT: movl %ebp, %esp
186 ; SSE41-32-NEXT: popl %ebp
187 ; SSE41-32-NEXT: .cfi_def_cfa %esp, 4
188 ; SSE41-32-NEXT: retl
190 ; SSE41-64-LABEL: sitofp_v2i64_v2f32:
191 ; SSE41-64: # %bb.0:
192 ; SSE41-64-NEXT: movq %xmm0, %rax
193 ; SSE41-64-NEXT: cvtsi2ss %rax, %xmm1
194 ; SSE41-64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
195 ; SSE41-64-NEXT: movq %xmm0, %rax
196 ; SSE41-64-NEXT: xorps %xmm0, %xmm0
197 ; SSE41-64-NEXT: cvtsi2ss %rax, %xmm0
198 ; SSE41-64-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
199 ; SSE41-64-NEXT: movaps %xmm1, %xmm0
200 ; SSE41-64-NEXT: retq
334 ; SSE41-32-LABEL: uitofp_v2i64_v2f32:
335 ; SSE41-32: # %bb.0:
336 ; SSE41-32-NEXT: pushl %ebp
337 ; SSE41-32-NEXT: .cfi_def_cfa_offset 8
338 ; SSE41-32-NEXT: .cfi_offset %ebp, -8
339 ; SSE41-32-NEXT: movl %esp, %ebp
340 ; SSE41-32-NEXT: .cfi_def_cfa_register %ebp
341 ; SSE41-32-NEXT: andl $-8, %esp
342 ; SSE41-32-NEXT: subl $24, %esp
343 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
344 ; SSE41-32-NEXT: movq %xmm1, {{[0-9]+}}(%esp)
345 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
346 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,3,3,3]
347 ; SSE41-32-NEXT: movd %xmm1, %eax
348 ; SSE41-32-NEXT: shrl $31, %eax
349 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
350 ; SSE41-32-NEXT: fadds {{\.LCPI.*}}(,%eax,4)
351 ; SSE41-32-NEXT: fstps (%esp)
352 ; SSE41-32-NEXT: wait
353 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
354 ; SSE41-32-NEXT: movd %xmm0, %eax
355 ; SSE41-32-NEXT: shrl $31, %eax
356 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
357 ; SSE41-32-NEXT: fadds {{\.LCPI.*}}(,%eax,4)
358 ; SSE41-32-NEXT: fstps {{[0-9]+}}(%esp)
359 ; SSE41-32-NEXT: wait
360 ; SSE41-32-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
361 ; SSE41-32-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
362 ; SSE41-32-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
363 ; SSE41-32-NEXT: movl %ebp, %esp
364 ; SSE41-32-NEXT: popl %ebp
365 ; SSE41-32-NEXT: .cfi_def_cfa %esp, 4
366 ; SSE41-32-NEXT: retl
368 ; SSE41-64-LABEL: uitofp_v2i64_v2f32:
369 ; SSE41-64: # %bb.0:
370 ; SSE41-64-NEXT: movdqa %xmm0, %xmm1
371 ; SSE41-64-NEXT: movq %xmm0, %rax
372 ; SSE41-64-NEXT: movq %rax, %rcx
373 ; SSE41-64-NEXT: shrq %rcx
374 ; SSE41-64-NEXT: movl %eax, %edx
375 ; SSE41-64-NEXT: andl $1, %edx
376 ; SSE41-64-NEXT: orq %rcx, %rdx
377 ; SSE41-64-NEXT: testq %rax, %rax
378 ; SSE41-64-NEXT: cmovnsq %rax, %rdx
379 ; SSE41-64-NEXT: xorps %xmm0, %xmm0
380 ; SSE41-64-NEXT: cvtsi2ss %rdx, %xmm0
381 ; SSE41-64-NEXT: jns .LBB3_2
382 ; SSE41-64-NEXT: # %bb.1:
383 ; SSE41-64-NEXT: addss %xmm0, %xmm0
384 ; SSE41-64-NEXT: .LBB3_2:
385 ; SSE41-64-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
386 ; SSE41-64-NEXT: movq %xmm1, %rax
387 ; SSE41-64-NEXT: movq %rax, %rcx
388 ; SSE41-64-NEXT: shrq %rcx
389 ; SSE41-64-NEXT: movl %eax, %edx
390 ; SSE41-64-NEXT: andl $1, %edx
391 ; SSE41-64-NEXT: orq %rcx, %rdx
392 ; SSE41-64-NEXT: testq %rax, %rax
393 ; SSE41-64-NEXT: cmovnsq %rax, %rdx
394 ; SSE41-64-NEXT: xorps %xmm1, %xmm1
395 ; SSE41-64-NEXT: cvtsi2ss %rdx, %xmm1
396 ; SSE41-64-NEXT: jns .LBB3_4
397 ; SSE41-64-NEXT: # %bb.3:
398 ; SSE41-64-NEXT: addss %xmm1, %xmm1
399 ; SSE41-64-NEXT: .LBB3_4:
400 ; SSE41-64-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
401 ; SSE41-64-NEXT: retq
507 ; SSE41-LABEL: sitofp_v4i1_v4f32:
508 ; SSE41: # %bb.0:
509 ; SSE41-NEXT: pslld $31, %xmm0
510 ; SSE41-NEXT: psrad $31, %xmm0
511 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
512 ; SSE41-NEXT: ret{{[l|q]}}
539 ; SSE41-32-LABEL: uitofp_v4i1_v4f32:
540 ; SSE41-32: # %bb.0:
541 ; SSE41-32-NEXT: andps {{\.LCPI.*}}, %xmm0
542 ; SSE41-32-NEXT: cvtdq2ps %xmm0, %xmm0
543 ; SSE41-32-NEXT: retl
545 ; SSE41-64-LABEL: uitofp_v4i1_v4f32:
546 ; SSE41-64: # %bb.0:
547 ; SSE41-64-NEXT: andps {{.*}}(%rip), %xmm0
548 ; SSE41-64-NEXT: cvtdq2ps %xmm0, %xmm0
549 ; SSE41-64-NEXT: retq
615 ; SSE41-LABEL: sitofp_v4i8_v4f32:
616 ; SSE41: # %bb.0:
617 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
618 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
619 ; SSE41-NEXT: psrad $24, %xmm0
620 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
621 ; SSE41-NEXT: ret{{[l|q]}}
643 ; SSE41-LABEL: uitofp_v4i8_v4f32:
644 ; SSE41: # %bb.0:
645 ; SSE41-NEXT: pxor %xmm1, %xmm1
646 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
647 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
648 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
649 ; SSE41-NEXT: ret{{[l|q]}}
670 ; SSE41-LABEL: sitofp_v4i16_v4f32:
671 ; SSE41: # %bb.0:
672 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
673 ; SSE41-NEXT: psrad $16, %xmm0
674 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
675 ; SSE41-NEXT: ret{{[l|q]}}
696 ; SSE41-LABEL: uitofp_v4i16_v4f32:
697 ; SSE41: # %bb.0:
698 ; SSE41-NEXT: pxor %xmm1, %xmm1
699 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
700 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
701 ; SSE41-NEXT: ret{{[l|q]}}
720 ; SSE41-LABEL: sitofp_v4i32_v4f32:
721 ; SSE41: # %bb.0:
722 ; SSE41-NEXT: cvtdq2ps %xmm0, %xmm0
723 ; SSE41-NEXT: ret{{[l|q]}}
758 ; SSE41-32-LABEL: uitofp_v4i32_v4f32:
759 ; SSE41-32: # %bb.0:
760 ; SSE41-32-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535]
761 ; SSE41-32-NEXT: pand %xmm0, %xmm1
762 ; SSE41-32-NEXT: por {{\.LCPI.*}}, %xmm1
763 ; SSE41-32-NEXT: psrld $16, %xmm0
764 ; SSE41-32-NEXT: por {{\.LCPI.*}}, %xmm0
765 ; SSE41-32-NEXT: subps {{\.LCPI.*}}, %xmm0
766 ; SSE41-32-NEXT: addps %xmm1, %xmm0
767 ; SSE41-32-NEXT: retl
769 ; SSE41-64-LABEL: uitofp_v4i32_v4f32:
770 ; SSE41-64: # %bb.0:
771 ; SSE41-64-NEXT: movdqa {{.*#+}} xmm1 = [65535,65535,65535,65535]
772 ; SSE41-64-NEXT: pand %xmm0, %xmm1
773 ; SSE41-64-NEXT: por {{.*}}(%rip), %xmm1
774 ; SSE41-64-NEXT: psrld $16, %xmm0
775 ; SSE41-64-NEXT: por {{.*}}(%rip), %xmm0
776 ; SSE41-64-NEXT: subps {{.*}}(%rip), %xmm0
777 ; SSE41-64-NEXT: addps %xmm1, %xmm0
778 ; SSE41-64-NEXT: retq
838 ; SSE41-LABEL: sitofp_v2i1_v2f64:
839 ; SSE41: # %bb.0:
840 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
841 ; SSE41-NEXT: pslld $31, %xmm0
842 ; SSE41-NEXT: psrad $31, %xmm0
843 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
844 ; SSE41-NEXT: ret{{[l|q]}}
874 ; SSE41-32-LABEL: uitofp_v2i1_v2f64:
875 ; SSE41-32: # %bb.0:
876 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
877 ; SSE41-32-NEXT: pand {{\.LCPI.*}}, %xmm0
878 ; SSE41-32-NEXT: cvtdq2pd %xmm0, %xmm0
879 ; SSE41-32-NEXT: retl
881 ; SSE41-64-LABEL: uitofp_v2i1_v2f64:
882 ; SSE41-64: # %bb.0:
883 ; SSE41-64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
884 ; SSE41-64-NEXT: pand {{.*}}(%rip), %xmm0
885 ; SSE41-64-NEXT: cvtdq2pd %xmm0, %xmm0
886 ; SSE41-64-NEXT: retq
960 ; SSE41-LABEL: sitofp_v2i8_v2f64:
961 ; SSE41: # %bb.0:
962 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
963 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
964 ; SSE41-NEXT: psrad $24, %xmm0
965 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
966 ; SSE41-NEXT: ret{{[l|q]}}
988 ; SSE41-LABEL: uitofp_v2i8_v2f64:
989 ; SSE41: # %bb.0:
990 ; SSE41-NEXT: pxor %xmm1, %xmm1
991 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
992 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
993 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
994 ; SSE41-NEXT: ret{{[l|q]}}
1015 ; SSE41-LABEL: sitofp_v2i16_v2f64:
1016 ; SSE41: # %bb.0:
1017 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1018 ; SSE41-NEXT: psrad $16, %xmm0
1019 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
1020 ; SSE41-NEXT: ret{{[l|q]}}
1041 ; SSE41-LABEL: uitofp_v2i16_v2f64:
1042 ; SSE41: # %bb.0:
1043 ; SSE41-NEXT: pxor %xmm1, %xmm1
1044 ; SSE41-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
1045 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
1046 ; SSE41-NEXT: ret{{[l|q]}}
1065 ; SSE41-LABEL: sitofp_v2i32_v2f64:
1066 ; SSE41: # %bb.0:
1067 ; SSE41-NEXT: cvtdq2pd %xmm0, %xmm0
1068 ; SSE41-NEXT: ret{{[l|q]}}
1090 ; SSE41-LABEL: uitofp_v2i32_v2f64:
1091 ; SSE41: # %bb.0:
1092 ; SSE41-NEXT: xorpd %xmm1, %xmm1
1093 ; SSE41-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1094 ; SSE41-NEXT: movapd {{.*#+}} xmm1 = [4.503599627370496E+15,4.503599627370496E+15]
1095 ; SSE41-NEXT: orpd %xmm1, %xmm0
1096 ; SSE41-NEXT: subpd %xmm1, %xmm0
1097 ; SSE41-NEXT: ret{{[l|q]}}
1175 ; SSE41-32-LABEL: sitofp_v2i64_v2f64:
1176 ; SSE41-32: # %bb.0:
1177 ; SSE41-32-NEXT: pushl %ebp
1178 ; SSE41-32-NEXT: .cfi_def_cfa_offset 8
1179 ; SSE41-32-NEXT: .cfi_offset %ebp, -8
1180 ; SSE41-32-NEXT: movl %esp, %ebp
1181 ; SSE41-32-NEXT: .cfi_def_cfa_register %ebp
1182 ; SSE41-32-NEXT: andl $-8, %esp
1183 ; SSE41-32-NEXT: subl $32, %esp
1184 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
1185 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1186 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
1187 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
1188 ; SSE41-32-NEXT: fstpl {{[0-9]+}}(%esp)
1189 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
1190 ; SSE41-32-NEXT: fstpl (%esp)
1191 ; SSE41-32-NEXT: wait
1192 ; SSE41-32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
1193 ; SSE41-32-NEXT: movhps {{.*#+}} xmm0 = xmm0[0,1],mem[0,1]
1194 ; SSE41-32-NEXT: movl %ebp, %esp
1195 ; SSE41-32-NEXT: popl %ebp
1196 ; SSE41-32-NEXT: .cfi_def_cfa %esp, 4
1197 ; SSE41-32-NEXT: retl
1199 ; SSE41-64-LABEL: sitofp_v2i64_v2f64:
1200 ; SSE41-64: # %bb.0:
1201 ; SSE41-64-NEXT: movq %xmm0, %rax
1202 ; SSE41-64-NEXT: cvtsi2sd %rax, %xmm1
1203 ; SSE41-64-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]
1204 ; SSE41-64-NEXT: movq %xmm0, %rax
1205 ; SSE41-64-NEXT: xorps %xmm0, %xmm0
1206 ; SSE41-64-NEXT: cvtsi2sd %rax, %xmm0
1207 ; SSE41-64-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]
1208 ; SSE41-64-NEXT: movapd %xmm1, %xmm0
1209 ; SSE41-64-NEXT: retq
1331 ; SSE41-32-LABEL: uitofp_v2i64_v2f64:
1332 ; SSE41-32: # %bb.0:
1333 ; SSE41-32-NEXT: pushl %ebp
1334 ; SSE41-32-NEXT: .cfi_def_cfa_offset 8
1335 ; SSE41-32-NEXT: .cfi_offset %ebp, -8
1336 ; SSE41-32-NEXT: movl %esp, %ebp
1337 ; SSE41-32-NEXT: .cfi_def_cfa_register %ebp
1338 ; SSE41-32-NEXT: andl $-8, %esp
1339 ; SSE41-32-NEXT: subl $32, %esp
1340 ; SSE41-32-NEXT: movq %xmm0, {{[0-9]+}}(%esp)
1341 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1342 ; SSE41-32-NEXT: movq %xmm1, {{[0-9]+}}(%esp)
1343 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
1344 ; SSE41-32-NEXT: movd %xmm1, %eax
1345 ; SSE41-32-NEXT: shrl $31, %eax
1346 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
1347 ; SSE41-32-NEXT: fadds {{\.LCPI.*}}(,%eax,4)
1348 ; SSE41-32-NEXT: fstpl {{[0-9]+}}(%esp)
1349 ; SSE41-32-NEXT: wait
1350 ; SSE41-32-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
1351 ; SSE41-32-NEXT: movd %xmm0, %eax
1352 ; SSE41-32-NEXT: shrl $31, %eax
1353 ; SSE41-32-NEXT: fildll {{[0-9]+}}(%esp)
1354 ; SSE41-32-NEXT: fadds {{\.LCPI.*}}(,%eax,4)
1355 ; SSE41-32-NEXT: fstpl (%esp)
1356 ; SSE41-32-NEXT: wait
1357 ; SSE41-32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
1358 ; SSE41-32-NEXT: movhps {{.*#+}} xmm0 = xmm0[0,1],mem[0,1]
1359 ; SSE41-32-NEXT: movl %ebp, %esp
1360 ; SSE41-32-NEXT: popl %ebp
1361 ; SSE41-32-NEXT: .cfi_def_cfa %esp, 4
1362 ; SSE41-32-NEXT: retl
1364 ; SSE41-64-LABEL: uitofp_v2i64_v2f64:
1365 ; SSE41-64: # %bb.0:
1366 ; SSE41-64-NEXT: movdqa %xmm0, %xmm1
1367 ; SSE41-64-NEXT: movq %xmm0, %rax
1368 ; SSE41-64-NEXT: movq %rax, %rcx
1369 ; SSE41-64-NEXT: shrq %rcx
1370 ; SSE41-64-NEXT: movl %eax, %edx
1371 ; SSE41-64-NEXT: andl $1, %edx
1372 ; SSE41-64-NEXT: orq %rcx, %rdx
1373 ; SSE41-64-NEXT: testq %rax, %rax
1374 ; SSE41-64-NEXT: cmovnsq %rax, %rdx
1375 ; SSE41-64-NEXT: xorps %xmm0, %xmm0
1376 ; SSE41-64-NEXT: cvtsi2sd %rdx, %xmm0
1377 ; SSE41-64-NEXT: jns .LBB21_2
1378 ; SSE41-64-NEXT: # %bb.1:
1379 ; SSE41-64-NEXT: addsd %xmm0, %xmm0
1380 ; SSE41-64-NEXT: .LBB21_2:
1381 ; SSE41-64-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,2,3]
1382 ; SSE41-64-NEXT: movq %xmm1, %rax
1383 ; SSE41-64-NEXT: movq %rax, %rcx
1384 ; SSE41-64-NEXT: shrq %rcx
1385 ; SSE41-64-NEXT: movl %eax, %edx
1386 ; SSE41-64-NEXT: andl $1, %edx
1387 ; SSE41-64-NEXT: orq %rcx, %rdx
1388 ; SSE41-64-NEXT: testq %rax, %rax
1389 ; SSE41-64-NEXT: cmovnsq %rax, %rdx
1390 ; SSE41-64-NEXT: xorps %xmm1, %xmm1
1391 ; SSE41-64-NEXT: cvtsi2sd %rdx, %xmm1
1392 ; SSE41-64-NEXT: jns .LBB21_4
1393 ; SSE41-64-NEXT: # %bb.3:
1394 ; SSE41-64-NEXT: addsd %xmm1, %xmm1
1395 ; SSE41-64-NEXT: .LBB21_4:
1396 ; SSE41-64-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1397 ; SSE41-64-NEXT: retq