diff --git a/test/CodeGen/X86/vec_fp_to_int.ll b/test/CodeGen/X86/vec_fp_to_int.ll index 8ec3bda20b9..27bb0b2e747 100644 --- a/test/CodeGen/X86/vec_fp_to_int.ll +++ b/test/CodeGen/X86/vec_fp_to_int.ll @@ -11,16 +11,16 @@ ; define <2 x i64> @fptosi_2f64_to_2i64(<2 x double> %a) { -; SSE2-LABEL: fptosi_2f64_to_2i64: -; SSE2: # BB#0: -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] -; SSE2-NEXT: movdqa %xmm1, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_2f64_to_2i64: +; SSE: # BB#0: +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] +; SSE-NEXT: movdqa %xmm1, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_2f64_to_2i64: ; AVX: # BB#0: @@ -36,16 +36,16 @@ define <2 x i64> @fptosi_2f64_to_2i64(<2 x double> %a) { } define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) { -; SSE2-LABEL: fptosi_2f64_to_2i32: -; SSE2: # BB#0: -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_2f64_to_2i32: +; SSE: # BB#0: +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] +; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,2,2,3] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_2f64_to_2i32: ; AVX: # BB#0: @@ -63,23 +63,23 @@ define <4 x i32> @fptosi_2f64_to_2i32(<2 x double> %a) { } define <4 x i64> @fptosi_4f64_to_4i64(<4 x double> %a) { -; SSE2-LABEL: fptosi_4f64_to_4i64: -; SSE2: # BB#0: -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm3 -; SSE2-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0] -; SSE2-NEXT: movdqa %xmm2, %xmm0 -; SSE2-NEXT: movdqa %xmm3, %xmm1 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f64_to_4i64: +; SSE: # BB#0: +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm3 +; SSE-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0] +; SSE-NEXT: movdqa %xmm2, %xmm0 +; SSE-NEXT: movdqa %xmm3, %xmm1 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f64_to_4i64: ; AVX: # BB#0: @@ -103,24 +103,24 @@ define <4 x i64> @fptosi_4f64_to_4i64(<4 x double> %a) { } define <4 x i32> @fptosi_4f64_to_4i32(<4 x double> %a) { -; SSE2-LABEL: fptosi_4f64_to_4i32: -; SSE2: # BB#0: -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3] -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3] -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f64_to_4i32: +; SSE: # BB#0: +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] +; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3] +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] +; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3] +; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f64_to_4i32: ; AVX: # BB#0: @@ -136,30 +136,30 @@ define <4 x i32> @fptosi_4f64_to_4i32(<4 x double> %a) { ; define <2 x i64> @fptoui_2f64_to_2i64(<2 x double> %a) { -; SSE2-LABEL: fptoui_2f64_to_2i64: -; SSE2: # BB#0: -; SSE2-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero -; SSE2-NEXT: movapd %xmm0, %xmm1 -; SSE2-NEXT: subsd %xmm2, %xmm1 -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttsd2si %xmm0, %rdx -; SSE2-NEXT: ucomisd %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rdx -; SSE2-NEXT: movd %rdx, %xmm1 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: movapd %xmm0, %xmm3 -; SSE2-NEXT: subsd %xmm2, %xmm3 -; SSE2-NEXT: cvttsd2si %xmm3, %rax -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttsd2si %xmm0, %rcx -; SSE2-NEXT: ucomisd %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rcx -; SSE2-NEXT: movd %rcx, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] -; SSE2-NEXT: movdqa %xmm1, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_2f64_to_2i64: +; SSE: # BB#0: +; SSE-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero +; SSE-NEXT: movapd %xmm0, %xmm1 +; SSE-NEXT: subsd %xmm2, %xmm1 +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttsd2si %xmm0, %rdx +; SSE-NEXT: ucomisd %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rdx +; SSE-NEXT: movd %rdx, %xmm1 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: movapd %xmm0, %xmm3 +; SSE-NEXT: subsd %xmm2, %xmm3 +; SSE-NEXT: cvttsd2si %xmm3, %rax +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttsd2si %xmm0, %rcx +; SSE-NEXT: ucomisd %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rcx +; SSE-NEXT: movd %rcx, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] +; SSE-NEXT: movdqa %xmm1, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_2f64_to_2i64: ; AVX: # BB#0: @@ -187,30 +187,30 @@ define <2 x i64> @fptoui_2f64_to_2i64(<2 x double> %a) { } define <4 x i32> @fptoui_2f64_to_2i32(<2 x double> %a) { -; SSE2-LABEL: fptoui_2f64_to_2i32: -; SSE2: # BB#0: -; SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero -; SSE2-NEXT: movapd %xmm0, %xmm2 -; SSE2-NEXT: subsd %xmm1, %xmm2 -; SSE2-NEXT: cvttsd2si %xmm2, %rax -; SSE2-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttsd2si %xmm0, %rdx -; SSE2-NEXT: ucomisd %xmm1, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rdx -; SSE2-NEXT: movd %rdx, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: movapd %xmm0, %xmm3 -; SSE2-NEXT: subsd %xmm1, %xmm3 -; SSE2-NEXT: cvttsd2si %xmm3, %rax -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttsd2si %xmm0, %rcx -; SSE2-NEXT: ucomisd %xmm1, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rcx -; SSE2-NEXT: movd %rcx, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_2f64_to_2i32: +; SSE: # BB#0: +; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero +; SSE-NEXT: movapd %xmm0, %xmm2 +; SSE-NEXT: subsd %xmm1, %xmm2 +; SSE-NEXT: cvttsd2si %xmm2, %rax +; SSE-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttsd2si %xmm0, %rdx +; SSE-NEXT: ucomisd %xmm1, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rdx +; SSE-NEXT: movd %rdx, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: movapd %xmm0, %xmm3 +; SSE-NEXT: subsd %xmm1, %xmm3 +; SSE-NEXT: cvttsd2si %xmm3, %rax +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttsd2si %xmm0, %rcx +; SSE-NEXT: ucomisd %xmm1, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rcx +; SSE-NEXT: movd %rcx, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0] +; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_2f64_to_2i32: ; AVX: # BB#0: @@ -240,48 +240,48 @@ define <4 x i32> @fptoui_2f64_to_2i32(<2 x double> %a) { } define <4 x i64> @fptoui_4f64_to_4i64(<4 x double> %a) { -; SSE2-LABEL: fptoui_4f64_to_4i64: -; SSE2: # BB#0: -; SSE2-NEXT: movapd %xmm0, %xmm2 -; SSE2-NEXT: movsd {{.*#+}} xmm3 = mem[0],zero -; SSE2-NEXT: subsd %xmm3, %xmm0 -; SSE2-NEXT: cvttsd2si %xmm0, %rcx -; SSE2-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm2, %rdx -; SSE2-NEXT: ucomisd %xmm3, %xmm2 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm0 -; SSE2-NEXT: shufpd {{.*#+}} xmm2 = xmm2[1,0] -; SSE2-NEXT: movapd %xmm2, %xmm4 -; SSE2-NEXT: subsd %xmm3, %xmm4 -; SSE2-NEXT: cvttsd2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm2, %rdx -; SSE2-NEXT: ucomisd %xmm3, %xmm2 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm2 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] -; SSE2-NEXT: movapd %xmm1, %xmm2 -; SSE2-NEXT: subsd %xmm3, %xmm2 -; SSE2-NEXT: cvttsd2si %xmm2, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm1, %rdx -; SSE2-NEXT: ucomisd %xmm3, %xmm1 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] -; SSE2-NEXT: movapd %xmm1, %xmm4 -; SSE2-NEXT: subsd %xmm3, %xmm4 -; SSE2-NEXT: cvttsd2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm1, %rax -; SSE2-NEXT: ucomisd %xmm3, %xmm1 -; SSE2-NEXT: cmovaeq %rcx, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] -; SSE2-NEXT: movdqa %xmm2, %xmm1 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f64_to_4i64: +; SSE: # BB#0: +; SSE-NEXT: movapd %xmm0, %xmm2 +; SSE-NEXT: movsd {{.*#+}} xmm3 = mem[0],zero +; SSE-NEXT: subsd %xmm3, %xmm0 +; SSE-NEXT: cvttsd2si %xmm0, %rcx +; SSE-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm2, %rdx +; SSE-NEXT: ucomisd %xmm3, %xmm2 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm0 +; SSE-NEXT: shufpd {{.*#+}} xmm2 = xmm2[1,0] +; SSE-NEXT: movapd %xmm2, %xmm4 +; SSE-NEXT: subsd %xmm3, %xmm4 +; SSE-NEXT: cvttsd2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm2, %rdx +; SSE-NEXT: ucomisd %xmm3, %xmm2 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm2 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] +; SSE-NEXT: movapd %xmm1, %xmm2 +; SSE-NEXT: subsd %xmm3, %xmm2 +; SSE-NEXT: cvttsd2si %xmm2, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm1, %rdx +; SSE-NEXT: ucomisd %xmm3, %xmm1 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] +; SSE-NEXT: movapd %xmm1, %xmm4 +; SSE-NEXT: subsd %xmm3, %xmm4 +; SSE-NEXT: cvttsd2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm1, %rax +; SSE-NEXT: ucomisd %xmm3, %xmm1 +; SSE-NEXT: cmovaeq %rcx, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] +; SSE-NEXT: movdqa %xmm2, %xmm1 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f64_to_4i64: ; AVX: # BB#0: @@ -327,50 +327,50 @@ define <4 x i64> @fptoui_4f64_to_4i64(<4 x double> %a) { } define <4 x i32> @fptoui_4f64_to_4i32(<4 x double> %a) { -; SSE2-LABEL: fptoui_4f64_to_4i32: -; SSE2: # BB#0: -; SSE2-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero -; SSE2-NEXT: movapd %xmm1, %xmm3 -; SSE2-NEXT: subsd %xmm2, %xmm3 -; SSE2-NEXT: cvttsd2si %xmm3, %rcx -; SSE2-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm1, %rdx -; SSE2-NEXT: ucomisd %xmm2, %xmm1 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm3 -; SSE2-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] -; SSE2-NEXT: movapd %xmm1, %xmm4 -; SSE2-NEXT: subsd %xmm2, %xmm4 -; SSE2-NEXT: cvttsd2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm1, %rdx -; SSE2-NEXT: ucomisd %xmm2, %xmm1 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm1[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3] -; SSE2-NEXT: movapd %xmm0, %xmm3 -; SSE2-NEXT: subsd %xmm2, %xmm3 -; SSE2-NEXT: cvttsd2si %xmm3, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm0, %rdx -; SSE2-NEXT: ucomisd %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm3 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: movapd %xmm0, %xmm4 -; SSE2-NEXT: subsd %xmm2, %xmm4 -; SSE2-NEXT: cvttsd2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttsd2si %xmm0, %rax -; SSE2-NEXT: ucomisd %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rcx, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0] -; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3] -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f64_to_4i32: +; SSE: # BB#0: +; SSE-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero +; SSE-NEXT: movapd %xmm1, %xmm3 +; SSE-NEXT: subsd %xmm2, %xmm3 +; SSE-NEXT: cvttsd2si %xmm3, %rcx +; SSE-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm1, %rdx +; SSE-NEXT: ucomisd %xmm2, %xmm1 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm3 +; SSE-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] +; SSE-NEXT: movapd %xmm1, %xmm4 +; SSE-NEXT: subsd %xmm2, %xmm4 +; SSE-NEXT: cvttsd2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm1, %rdx +; SSE-NEXT: ucomisd %xmm2, %xmm1 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm1[0] +; SSE-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3] +; SSE-NEXT: movapd %xmm0, %xmm3 +; SSE-NEXT: subsd %xmm2, %xmm3 +; SSE-NEXT: cvttsd2si %xmm3, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm0, %rdx +; SSE-NEXT: ucomisd %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm3 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: movapd %xmm0, %xmm4 +; SSE-NEXT: subsd %xmm2, %xmm4 +; SSE-NEXT: cvttsd2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttsd2si %xmm0, %rax +; SSE-NEXT: ucomisd %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rcx, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm0[0] +; SSE-NEXT: pshufd {{.*#+}} xmm0 = xmm3[0,2,2,3] +; SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f64_to_4i32: ; AVX: # BB#0: @@ -396,10 +396,10 @@ define <4 x i32> @fptoui_4f64_to_4i32(<4 x double> %a) { ; define <4 x i32> @fptosi_4f32_to_4i32(<4 x float> %a) { -; SSE2-LABEL: fptosi_4f32_to_4i32: -; SSE2: # BB#0: -; SSE2-NEXT: cvttps2dq %xmm0, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f32_to_4i32: +; SSE: # BB#0: +; SSE-NEXT: cvttps2dq %xmm0, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f32_to_4i32: ; AVX: # BB#0: @@ -410,16 +410,16 @@ define <4 x i32> @fptosi_4f32_to_4i32(<4 x float> %a) { } define <2 x i64> @fptosi_2f32_to_2i64(<4 x float> %a) { -; SSE2-LABEL: fptosi_2f32_to_2i64: -; SSE2: # BB#0: -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3] -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] -; SSE2-NEXT: movdqa %xmm1, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_2f32_to_2i64: +; SSE: # BB#0: +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3] +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] +; SSE-NEXT: movdqa %xmm1, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_2f32_to_2i64: ; AVX: # BB#0: @@ -436,11 +436,11 @@ define <2 x i64> @fptosi_2f32_to_2i64(<4 x float> %a) { } define <8 x i32> @fptosi_8f32_to_8i32(<8 x float> %a) { -; SSE2-LABEL: fptosi_8f32_to_8i32: -; SSE2: # BB#0: -; SSE2-NEXT: cvttps2dq %xmm0, %xmm0 -; SSE2-NEXT: cvttps2dq %xmm1, %xmm1 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_8f32_to_8i32: +; SSE: # BB#0: +; SSE-NEXT: cvttps2dq %xmm0, %xmm0 +; SSE-NEXT: cvttps2dq %xmm1, %xmm1 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_8f32_to_8i32: ; AVX: # BB#0: @@ -451,25 +451,25 @@ define <8 x i32> @fptosi_8f32_to_8i32(<8 x float> %a) { } define <4 x i64> @fptosi_4f32_to_4i64(<8 x float> %a) { -; SSE2-LABEL: fptosi_4f32_to_4i64: -; SSE2: # BB#0: -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm2 -; SSE2-NEXT: movaps %xmm0, %xmm1 -; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,2,3] -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] -; SSE2-NEXT: movaps %xmm0, %xmm1 -; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1,2,3] -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movd %rax, %xmm3 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] -; SSE2-NEXT: movdqa %xmm2, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f32_to_4i64: +; SSE: # BB#0: +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm2 +; SSE-NEXT: movaps %xmm0, %xmm1 +; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,2,3] +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0] +; SSE-NEXT: movaps %xmm0, %xmm1 +; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1,2,3] +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movd %rax, %xmm3 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] +; SSE-NEXT: movdqa %xmm2, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f32_to_4i64: ; AVX: # BB#0: @@ -498,26 +498,26 @@ define <4 x i64> @fptosi_4f32_to_4i64(<8 x float> %a) { ; define <4 x i32> @fptoui_4f32_to_4i32(<4 x float> %a) { -; SSE2-LABEL: fptoui_4f32_to_4i32: -; SSE2: # BB#0: -; SSE2-NEXT: movaps %xmm0, %xmm1 -; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1,2,3] -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movd %eax, %xmm1 -; SSE2-NEXT: movaps %xmm0, %xmm2 -; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,2,3] -; SSE2-NEXT: cvttss2si %xmm2, %rax -; SSE2-NEXT: movd %eax, %xmm2 -; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %eax, %xmm1 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %eax, %xmm0 -; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] -; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] -; SSE2-NEXT: movdqa %xmm1, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f32_to_4i32: +; SSE: # BB#0: +; SSE-NEXT: movaps %xmm0, %xmm1 +; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,1,2,3] +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movd %eax, %xmm1 +; SSE-NEXT: movaps %xmm0, %xmm2 +; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,2,3] +; SSE-NEXT: cvttss2si %xmm2, %rax +; SSE-NEXT: movd %eax, %xmm2 +; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %eax, %xmm1 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %eax, %xmm0 +; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] +; SSE-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] +; SSE-NEXT: movdqa %xmm1, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f32_to_4i32: ; AVX: # BB#0: @@ -538,30 +538,30 @@ define <4 x i32> @fptoui_4f32_to_4i32(<4 x float> %a) { } define <2 x i64> @fptoui_2f32_to_2i64(<4 x float> %a) { -; SSE2-LABEL: fptoui_2f32_to_2i64: -; SSE2: # BB#0: -; SSE2-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero -; SSE2-NEXT: movaps %xmm0, %xmm1 -; SSE2-NEXT: subss %xmm2, %xmm1 -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttss2si %xmm0, %rdx -; SSE2-NEXT: ucomiss %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rdx -; SSE2-NEXT: movd %rdx, %xmm1 -; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3] -; SSE2-NEXT: movaps %xmm0, %xmm3 -; SSE2-NEXT: subss %xmm2, %xmm3 -; SSE2-NEXT: cvttss2si %xmm3, %rax -; SSE2-NEXT: xorq %rcx, %rax -; SSE2-NEXT: cvttss2si %xmm0, %rcx -; SSE2-NEXT: ucomiss %xmm2, %xmm0 -; SSE2-NEXT: cmovaeq %rax, %rcx -; SSE2-NEXT: movd %rcx, %xmm0 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] -; SSE2-NEXT: movdqa %xmm1, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_2f32_to_2i64: +; SSE: # BB#0: +; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero +; SSE-NEXT: movaps %xmm0, %xmm1 +; SSE-NEXT: subss %xmm2, %xmm1 +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttss2si %xmm0, %rdx +; SSE-NEXT: ucomiss %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rdx +; SSE-NEXT: movd %rdx, %xmm1 +; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,2,3] +; SSE-NEXT: movaps %xmm0, %xmm3 +; SSE-NEXT: subss %xmm2, %xmm3 +; SSE-NEXT: cvttss2si %xmm3, %rax +; SSE-NEXT: xorq %rcx, %rax +; SSE-NEXT: cvttss2si %xmm0, %rcx +; SSE-NEXT: ucomiss %xmm2, %xmm0 +; SSE-NEXT: cmovaeq %rax, %rcx +; SSE-NEXT: movd %rcx, %xmm0 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0] +; SSE-NEXT: movdqa %xmm1, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_2f32_to_2i64: ; AVX: # BB#0: @@ -590,42 +590,42 @@ define <2 x i64> @fptoui_2f32_to_2i64(<4 x float> %a) { } define <8 x i32> @fptoui_8f32_to_8i32(<8 x float> %a) { -; SSE2-LABEL: fptoui_8f32_to_8i32: -; SSE2: # BB#0: -; SSE2-NEXT: movaps %xmm0, %xmm2 -; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,1,2,3] -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: movd %eax, %xmm0 -; SSE2-NEXT: movaps %xmm2, %xmm3 -; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] -; SSE2-NEXT: cvttss2si %xmm3, %rax -; SSE2-NEXT: movd %eax, %xmm3 -; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1] -; SSE2-NEXT: cvttss2si %xmm2, %rax -; SSE2-NEXT: movd %eax, %xmm0 -; SSE2-NEXT: shufpd {{.*#+}} xmm2 = xmm2[1,0] -; SSE2-NEXT: cvttss2si %xmm2, %rax -; SSE2-NEXT: movd %eax, %xmm2 -; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] -; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1] -; SSE2-NEXT: movaps %xmm1, %xmm2 -; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1,2,3] -; SSE2-NEXT: cvttss2si %xmm2, %rax -; SSE2-NEXT: movd %eax, %xmm2 -; SSE2-NEXT: movaps %xmm1, %xmm3 -; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] -; SSE2-NEXT: cvttss2si %xmm3, %rax -; SSE2-NEXT: movd %eax, %xmm3 -; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1] -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movd %eax, %xmm2 -; SSE2-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] -; SSE2-NEXT: cvttss2si %xmm1, %rax -; SSE2-NEXT: movd %eax, %xmm1 -; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] -; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1] -; SSE2-NEXT: movdqa %xmm2, %xmm1 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_8f32_to_8i32: +; SSE: # BB#0: +; SSE-NEXT: movaps %xmm0, %xmm2 +; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,1,2,3] +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: movd %eax, %xmm0 +; SSE-NEXT: movaps %xmm2, %xmm3 +; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] +; SSE-NEXT: cvttss2si %xmm3, %rax +; SSE-NEXT: movd %eax, %xmm3 +; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1] +; SSE-NEXT: cvttss2si %xmm2, %rax +; SSE-NEXT: movd %eax, %xmm0 +; SSE-NEXT: shufpd {{.*#+}} xmm2 = xmm2[1,0] +; SSE-NEXT: cvttss2si %xmm2, %rax +; SSE-NEXT: movd %eax, %xmm2 +; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] +; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1] +; SSE-NEXT: movaps %xmm1, %xmm2 +; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[3,1,2,3] +; SSE-NEXT: cvttss2si %xmm2, %rax +; SSE-NEXT: movd %eax, %xmm2 +; SSE-NEXT: movaps %xmm1, %xmm3 +; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] +; SSE-NEXT: cvttss2si %xmm3, %rax +; SSE-NEXT: movd %eax, %xmm3 +; SSE-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1] +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movd %eax, %xmm2 +; SSE-NEXT: shufpd {{.*#+}} xmm1 = xmm1[1,0] +; SSE-NEXT: cvttss2si %xmm1, %rax +; SSE-NEXT: movd %eax, %xmm1 +; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] +; SSE-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1] +; SSE-NEXT: movdqa %xmm2, %xmm1 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_8f32_to_8i32: ; AVX: # BB#0: @@ -659,51 +659,51 @@ define <8 x i32> @fptoui_8f32_to_8i32(<8 x float> %a) { } define <4 x i64> @fptoui_4f32_to_4i64(<8 x float> %a) { -; SSE2-LABEL: fptoui_4f32_to_4i64: -; SSE2: # BB#0: -; SSE2-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero -; SSE2-NEXT: movaps %xmm0, %xmm2 -; SSE2-NEXT: subss %xmm1, %xmm2 -; SSE2-NEXT: cvttss2si %xmm2, %rcx -; SSE2-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttss2si %xmm0, %rdx -; SSE2-NEXT: ucomiss %xmm1, %xmm0 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm2 -; SSE2-NEXT: movaps %xmm0, %xmm3 -; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] -; SSE2-NEXT: movaps %xmm3, %xmm4 -; SSE2-NEXT: subss %xmm1, %xmm4 -; SSE2-NEXT: cvttss2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttss2si %xmm3, %rdx -; SSE2-NEXT: ucomiss %xmm1, %xmm3 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm3 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] -; SSE2-NEXT: movaps %xmm0, %xmm3 -; SSE2-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,1,2,3] -; SSE2-NEXT: movaps %xmm3, %xmm4 -; SSE2-NEXT: subss %xmm1, %xmm4 -; SSE2-NEXT: cvttss2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttss2si %xmm3, %rdx -; SSE2-NEXT: ucomiss %xmm1, %xmm3 -; SSE2-NEXT: cmovaeq %rcx, %rdx -; SSE2-NEXT: movd %rdx, %xmm3 -; SSE2-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] -; SSE2-NEXT: movapd %xmm0, %xmm4 -; SSE2-NEXT: subss %xmm1, %xmm4 -; SSE2-NEXT: cvttss2si %xmm4, %rcx -; SSE2-NEXT: xorq %rax, %rcx -; SSE2-NEXT: cvttss2si %xmm0, %rax -; SSE2-NEXT: ucomiss %xmm1, %xmm0 -; SSE2-NEXT: cmovaeq %rcx, %rax -; SSE2-NEXT: movd %rax, %xmm1 -; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] -; SSE2-NEXT: movdqa %xmm2, %xmm0 -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f32_to_4i64: +; SSE: # BB#0: +; SSE-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero +; SSE-NEXT: movaps %xmm0, %xmm2 +; SSE-NEXT: subss %xmm1, %xmm2 +; SSE-NEXT: cvttss2si %xmm2, %rcx +; SSE-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000 +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttss2si %xmm0, %rdx +; SSE-NEXT: ucomiss %xmm1, %xmm0 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm2 +; SSE-NEXT: movaps %xmm0, %xmm3 +; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,2,3] +; SSE-NEXT: movaps %xmm3, %xmm4 +; SSE-NEXT: subss %xmm1, %xmm4 +; SSE-NEXT: cvttss2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttss2si %xmm3, %rdx +; SSE-NEXT: ucomiss %xmm1, %xmm3 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm3 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] +; SSE-NEXT: movaps %xmm0, %xmm3 +; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[3,1,2,3] +; SSE-NEXT: movaps %xmm3, %xmm4 +; SSE-NEXT: subss %xmm1, %xmm4 +; SSE-NEXT: cvttss2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttss2si %xmm3, %rdx +; SSE-NEXT: ucomiss %xmm1, %xmm3 +; SSE-NEXT: cmovaeq %rcx, %rdx +; SSE-NEXT: movd %rdx, %xmm3 +; SSE-NEXT: shufpd {{.*#+}} xmm0 = xmm0[1,0] +; SSE-NEXT: movapd %xmm0, %xmm4 +; SSE-NEXT: subss %xmm1, %xmm4 +; SSE-NEXT: cvttss2si %xmm4, %rcx +; SSE-NEXT: xorq %rax, %rcx +; SSE-NEXT: cvttss2si %xmm0, %rax +; SSE-NEXT: ucomiss %xmm1, %xmm0 +; SSE-NEXT: cmovaeq %rcx, %rax +; SSE-NEXT: movd %rax, %xmm1 +; SSE-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0] +; SSE-NEXT: movdqa %xmm2, %xmm0 +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f32_to_4i64: ; AVX: # BB#0: @@ -754,10 +754,10 @@ define <4 x i64> @fptoui_4f32_to_4i64(<8 x float> %a) { ; define <2 x i64> @fptosi_2f64_to_2i64_const() { -; SSE2-LABEL: fptosi_2f64_to_2i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_2f64_to_2i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_2f64_to_2i64_const: ; AVX: # BB#0: @@ -768,10 +768,10 @@ define <2 x i64> @fptosi_2f64_to_2i64_const() { } define <4 x i32> @fptosi_2f64_to_2i32_const() { -; SSE2-LABEL: fptosi_2f64_to_2i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = <4294967295,1,u,u> -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_2f64_to_2i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = <4294967295,1,u,u> +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_2f64_to_2i32_const: ; AVX: # BB#0: @@ -783,11 +783,11 @@ define <4 x i32> @fptosi_2f64_to_2i32_const() { } define <4 x i64> @fptosi_4f64_to_4i64_const() { -; SSE2-LABEL: fptosi_4f64_to_4i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [2,18446744073709551613] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f64_to_4i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [2,18446744073709551613] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f64_to_4i64_const: ; AVX: # BB#0: @@ -798,10 +798,10 @@ define <4 x i64> @fptosi_4f64_to_4i64_const() { } define <4 x i32> @fptosi_4f64_to_4i32_const() { -; SSE2-LABEL: fptosi_4f64_to_4i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [4294967295,1,4294967294,3] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f64_to_4i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [4294967295,1,4294967294,3] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f64_to_4i32_const: ; AVX: # BB#0: @@ -812,10 +812,10 @@ define <4 x i32> @fptosi_4f64_to_4i32_const() { } define <2 x i64> @fptoui_2f64_to_2i64_const() { -; SSE2-LABEL: fptoui_2f64_to_2i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [2,4] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_2f64_to_2i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [2,4] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_2f64_to_2i64_const: ; AVX: # BB#0: @@ -826,10 +826,10 @@ define <2 x i64> @fptoui_2f64_to_2i64_const() { } define <4 x i32> @fptoui_2f64_to_2i32_const(<2 x double> %a) { -; SSE2-LABEL: fptoui_2f64_to_2i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = <2,4,u,u> -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_2f64_to_2i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = <2,4,u,u> +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_2f64_to_2i32_const: ; AVX: # BB#0: @@ -841,11 +841,11 @@ define <4 x i32> @fptoui_2f64_to_2i32_const(<2 x double> %a) { } define <4 x i64> @fptoui_4f64_to_4i64_const(<4 x double> %a) { -; SSE2-LABEL: fptoui_4f64_to_4i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [2,4] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [6,8] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f64_to_4i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [2,4] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [6,8] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f64_to_4i64_const: ; AVX: # BB#0: @@ -856,10 +856,10 @@ define <4 x i64> @fptoui_4f64_to_4i64_const(<4 x double> %a) { } define <4 x i32> @fptoui_4f64_to_4i32_const(<4 x double> %a) { -; SSE2-LABEL: fptoui_4f64_to_4i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [2,4,6,8] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f64_to_4i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [2,4,6,8] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f64_to_4i32_const: ; AVX: # BB#0: @@ -870,10 +870,10 @@ define <4 x i32> @fptoui_4f64_to_4i32_const(<4 x double> %a) { } define <4 x i32> @fptosi_4f32_to_4i32_const() { -; SSE2-LABEL: fptosi_4f32_to_4i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,4294967295,2,3] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f32_to_4i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,4294967295,2,3] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f32_to_4i32_const: ; AVX: # BB#0: @@ -884,11 +884,11 @@ define <4 x i32> @fptosi_4f32_to_4i32_const() { } define <4 x i64> @fptosi_4f32_to_4i64_const() { -; SSE2-LABEL: fptosi_4f32_to_4i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [2,3] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_4f32_to_4i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,18446744073709551615] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [2,3] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_4f32_to_4i64_const: ; AVX: # BB#0: @@ -899,11 +899,11 @@ define <4 x i64> @fptosi_4f32_to_4i64_const() { } define <8 x i32> @fptosi_8f32_to_8i32_const(<8 x float> %a) { -; SSE2-LABEL: fptosi_8f32_to_8i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,4294967295,2,3] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [6,4294967288,2,4294967295] -; SSE2-NEXT: retq +; SSE-LABEL: fptosi_8f32_to_8i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,4294967295,2,3] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [6,4294967288,2,4294967295] +; SSE-NEXT: retq ; ; AVX-LABEL: fptosi_8f32_to_8i32_const: ; AVX: # BB#0: @@ -914,10 +914,10 @@ define <8 x i32> @fptosi_8f32_to_8i32_const(<8 x float> %a) { } define <4 x i32> @fptoui_4f32_to_4i32_const(<4 x float> %a) { -; SSE2-LABEL: fptoui_4f32_to_4i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,2,4,6] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f32_to_4i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,2,4,6] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f32_to_4i32_const: ; AVX: # BB#0: @@ -928,11 +928,11 @@ define <4 x i32> @fptoui_4f32_to_4i32_const(<4 x float> %a) { } define <4 x i64> @fptoui_4f32_to_4i64_const() { -; SSE2-LABEL: fptoui_4f32_to_4i64_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,2] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [4,8] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_4f32_to_4i64_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,2] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [4,8] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_4f32_to_4i64_const: ; AVX: # BB#0: @@ -943,11 +943,11 @@ define <4 x i64> @fptoui_4f32_to_4i64_const() { } define <8 x i32> @fptoui_8f32_to_8i32_const(<8 x float> %a) { -; SSE2-LABEL: fptoui_8f32_to_8i32_const: -; SSE2: # BB#0: -; SSE2-NEXT: movaps {{.*#+}} xmm0 = [1,2,4,6] -; SSE2-NEXT: movaps {{.*#+}} xmm1 = [8,6,4,1] -; SSE2-NEXT: retq +; SSE-LABEL: fptoui_8f32_to_8i32_const: +; SSE: # BB#0: +; SSE-NEXT: movaps {{.*#+}} xmm0 = [1,2,4,6] +; SSE-NEXT: movaps {{.*#+}} xmm1 = [8,6,4,1] +; SSE-NEXT: retq ; ; AVX-LABEL: fptoui_8f32_to_8i32_const: ; AVX: # BB#0: