From: Craig Topper Date: Sun, 5 Feb 2017 18:33:24 +0000 (+0000) Subject: [X86] Fix printing of blendvpd/blendvps/pblendvb to include the implicit %xmm0 argume... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cc54be06769b8d5c5531408d647805b57a6fcbb2;p=llvm [X86] Fix printing of blendvpd/blendvps/pblendvb to include the implicit %xmm0 argument. This makes codegen output more obvious about the %xmm0 usage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294131 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index 09e80e3f120..c91889f2240 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -7129,14 +7129,14 @@ let Uses = [XMM0], Constraints = "$src1 = $dst" in { def rr0 : SS48I, Sched<[itins.Sched]>; def rm0 : SS48I; // Aliases with the implicit xmm0 argument -def : InstAlias<"blendvpd\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (BLENDVPDrr0 VR128:$dst, VR128:$src2)>; -def : InstAlias<"blendvpd\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (BLENDVPDrm0 VR128:$dst, f128mem:$src2)>; -def : InstAlias<"blendvps\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (BLENDVPSrr0 VR128:$dst, VR128:$src2)>; -def : InstAlias<"blendvps\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (BLENDVPSrm0 VR128:$dst, f128mem:$src2)>; -def : InstAlias<"pblendvb\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (PBLENDVBrr0 VR128:$dst, VR128:$src2)>; -def : InstAlias<"pblendvb\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (PBLENDVBrm0 VR128:$dst, i128mem:$src2)>; +def : InstAlias<"blendvpd\t{$src2, $dst|$dst, $src2}", + (BLENDVPDrr0 VR128:$dst, VR128:$src2), 0>; +def : InstAlias<"blendvpd\t{$src2, $dst|$dst, $src2}", + (BLENDVPDrm0 VR128:$dst, f128mem:$src2), 0>; +def : InstAlias<"blendvps\t{$src2, $dst|$dst, $src2}", + (BLENDVPSrr0 VR128:$dst, VR128:$src2), 0>; +def : InstAlias<"blendvps\t{$src2, $dst|$dst, $src2}", + (BLENDVPSrm0 VR128:$dst, f128mem:$src2), 0>; +def : InstAlias<"pblendvb\t{$src2, $dst|$dst, $src2}", + (PBLENDVBrr0 VR128:$dst, VR128:$src2), 0>; +def : InstAlias<"pblendvb\t{$src2, $dst|$dst, $src2}", + (PBLENDVBrm0 VR128:$dst, i128mem:$src2), 0>; let Predicates = [UseSSE41] in { def : Pat<(v16i8 (vselect (v16i8 XMM0), (v16i8 VR128:$src1), diff --git a/test/CodeGen/X86/2011-10-21-widen-cmp.ll b/test/CodeGen/X86/2011-10-21-widen-cmp.ll index 9e6e2f70b0a..429960333ae 100644 --- a/test/CodeGen/X86/2011-10-21-widen-cmp.ll +++ b/test/CodeGen/X86/2011-10-21-widen-cmp.ll @@ -11,7 +11,7 @@ define void @cmp_2_floats(<2 x float> %a, <2 x float> %b) { ; CHECK-NEXT: cmpordps %xmm0, %xmm0 ; CHECK-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1] ; CHECK-NEXT: pslld $31, %xmm0 -; CHECK-NEXT: blendvps %xmm2, %xmm1 +; CHECK-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; CHECK-NEXT: movlps %xmm1, (%rax) ; CHECK-NEXT: retq entry: @@ -26,7 +26,7 @@ define void @cmp_2_doubles(<2 x double> %a, <2 x double> %b) { ; CHECK: # BB#0: # %entry ; CHECK-NEXT: movapd %xmm0, %xmm2 ; CHECK-NEXT: cmpordpd %xmm0, %xmm0 -; CHECK-NEXT: blendvpd %xmm2, %xmm1 +; CHECK-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; CHECK-NEXT: movapd %xmm1, (%rax) ; CHECK-NEXT: retq entry: diff --git a/test/CodeGen/X86/2011-11-30-or.ll b/test/CodeGen/X86/2011-11-30-or.ll index 8378a022eab..5c324a42392 100644 --- a/test/CodeGen/X86/2011-11-30-or.ll +++ b/test/CodeGen/X86/2011-11-30-or.ll @@ -5,7 +5,7 @@ target triple = "x86_64-apple-macosx10.6.6" ; Test that the order of operands is correct ; CHECK: select_func -; CHECK: pblendvb {{LCPI0_[0-9]*}}(%rip), %xmm1 +; CHECK: pblendvb %xmm0, {{LCPI0_[0-9]*}}(%rip), %xmm1 ; CHECK: ret define void @select_func(<8 x i16> %in) { diff --git a/test/CodeGen/X86/2011-12-15-vec_shift.ll b/test/CodeGen/X86/2011-12-15-vec_shift.ll index 4d49b3af88e..70783509bb7 100644 --- a/test/CodeGen/X86/2011-12-15-vec_shift.ll +++ b/test/CodeGen/X86/2011-12-15-vec_shift.ll @@ -7,7 +7,7 @@ target triple = "x86_64-apple-macosx10.7" define <16 x i8> @shift(<16 x i8> %a, <16 x i8> %b) nounwind { ; Make sure operands to pblend are in the right order. ; CHECK-W-SSE4: psllw $4, [[REG1:%xmm.]] - ; CHECK-W-SSE4: pblendvb [[REG1]],{{ %xmm.}} + ; CHECK-W-SSE4: pblendvb %xmm0, [[REG1]],{{ %xmm.}} ; CHECK-W-SSE4: psllw $2 ; Make sure we're masking and pcmp'ing the VSELECT conditon vector. diff --git a/test/CodeGen/X86/pointer-vector.ll b/test/CodeGen/X86/pointer-vector.ll index 9a0271aa7f0..d5297b9c70c 100644 --- a/test/CodeGen/X86/pointer-vector.ll +++ b/test/CodeGen/X86/pointer-vector.ll @@ -133,7 +133,7 @@ define <4 x i32> @ICMP0(<4 x i8*>* %p0, <4 x i8*>* %p1) nounwind { ; CHECK-NEXT: movdqa (%ecx), %xmm0 ; CHECK-NEXT: pcmpgtd (%eax), %xmm0 ; CHECK-NEXT: movaps {{.*#+}} xmm1 = [9,8,7,6] -; CHECK-NEXT: blendvps {{\.LCPI.*}}, %xmm1 +; CHECK-NEXT: blendvps %xmm0, {{\.LCPI.*}}, %xmm1 ; CHECK-NEXT: movaps %xmm1, %xmm0 ; CHECK-NEXT: retl entry: @@ -152,7 +152,7 @@ define <4 x i32> @ICMP1(<4 x i8*>* %p0, <4 x i8*>* %p1) nounwind { ; CHECK-NEXT: movdqa (%ecx), %xmm0 ; CHECK-NEXT: pcmpeqd (%eax), %xmm0 ; CHECK-NEXT: movaps {{.*#+}} xmm1 = [9,8,7,6] -; CHECK-NEXT: blendvps {{\.LCPI.*}}, %xmm1 +; CHECK-NEXT: blendvps %xmm0, {{\.LCPI.*}}, %xmm1 ; CHECK-NEXT: movaps %xmm1, %xmm0 ; CHECK-NEXT: retl entry: diff --git a/test/CodeGen/X86/pr18014.ll b/test/CodeGen/X86/pr18014.ll index dc9d53fff17..bb3b9c23f1e 100644 --- a/test/CodeGen/X86/pr18014.ll +++ b/test/CodeGen/X86/pr18014.ll @@ -9,7 +9,7 @@ define <4 x i32> @foo(<4 x i32>* %p, <4 x i1> %cond, <4 x i32> %v1, <4 x i32> %v ; CHECK: # BB#0: ; CHECK-NEXT: pslld $31, %xmm0 ; CHECK-NEXT: psrad $31, %xmm0 -; CHECK-NEXT: blendvps %xmm1, %xmm2 +; CHECK-NEXT: blendvps %xmm0, %xmm1, %xmm2 ; CHECK-NEXT: paddd %xmm0, %xmm1 ; CHECK-NEXT: movaps %xmm2, (%rdi) ; CHECK-NEXT: movdqa %xmm1, %xmm0 diff --git a/test/CodeGen/X86/sse-minmax.ll b/test/CodeGen/X86/sse-minmax.ll index 796d9afabb1..27008f26b81 100644 --- a/test/CodeGen/X86/sse-minmax.ll +++ b/test/CodeGen/X86/sse-minmax.ll @@ -1203,7 +1203,7 @@ define <2 x double> @test_maxpd(<2 x double> %x, <2 x double> %y) { ; STRICT-NEXT: movapd %xmm0, %xmm2 ; STRICT-NEXT: movapd %xmm1, %xmm0 ; STRICT-NEXT: cmplepd %xmm2, %xmm0 -; STRICT-NEXT: blendvpd %xmm2, %xmm1 +; STRICT-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movapd %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1221,7 +1221,7 @@ define <2 x double> @test_minpd(<2 x double> %x, <2 x double> %y) { ; STRICT: # BB#0: ; STRICT-NEXT: movapd %xmm0, %xmm2 ; STRICT-NEXT: cmplepd %xmm1, %xmm0 -; STRICT-NEXT: blendvpd %xmm2, %xmm1 +; STRICT-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movapd %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1240,7 +1240,7 @@ define <4 x float> @test_maxps(<4 x float> %x, <4 x float> %y) { ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: cmpleps %xmm2, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1258,7 +1258,7 @@ define <4 x float> @test_minps(<4 x float> %x, <4 x float> %y) { ; STRICT: # BB#0: ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: cmpleps %xmm1, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1279,7 +1279,7 @@ define <2 x float> @test_maxps_illegal_v2f32(<2 x float> %x, <2 x float> %y) { ; STRICT-NEXT: cmpleps %xmm2, %xmm0 ; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1] ; STRICT-NEXT: pslld $31, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1299,7 +1299,7 @@ define <2 x float> @test_minps_illegal_v2f32(<2 x float> %x, <2 x float> %y) { ; STRICT-NEXT: cmpleps %xmm1, %xmm0 ; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1] ; STRICT-NEXT: pslld $31, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1318,7 +1318,7 @@ define <3 x float> @test_maxps_illegal_v3f32(<3 x float> %x, <3 x float> %y) { ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: cmpleps %xmm2, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; @@ -1336,7 +1336,7 @@ define <3 x float> @test_minps_illegal_v3f32(<3 x float> %x, <3 x float> %y) { ; STRICT: # BB#0: ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: cmpleps %xmm1, %xmm0 -; STRICT-NEXT: blendvps %xmm2, %xmm1 +; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq ; diff --git a/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll b/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll index 16868d854df..72c81fe9f1b 100644 --- a/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll +++ b/test/CodeGen/X86/sse41-intrinsics-fast-isel.ll @@ -54,7 +54,7 @@ define <2 x i64> @test_mm_blendv_epi8(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a ; X32: # BB#0: ; X32-NEXT: movdqa %xmm0, %xmm3 ; X32-NEXT: movaps %xmm2, %xmm0 -; X32-NEXT: pblendvb %xmm1, %xmm3 +; X32-NEXT: pblendvb %xmm0, %xmm1, %xmm3 ; X32-NEXT: movdqa %xmm3, %xmm0 ; X32-NEXT: retl ; @@ -62,7 +62,7 @@ define <2 x i64> @test_mm_blendv_epi8(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a ; X64: # BB#0: ; X64-NEXT: movdqa %xmm0, %xmm3 ; X64-NEXT: movaps %xmm2, %xmm0 -; X64-NEXT: pblendvb %xmm1, %xmm3 +; X64-NEXT: pblendvb %xmm0, %xmm1, %xmm3 ; X64-NEXT: movdqa %xmm3, %xmm0 ; X64-NEXT: retq %arg0 = bitcast <2 x i64> %a0 to <16 x i8> @@ -79,7 +79,7 @@ define <2 x double> @test_mm_blendv_pd(<2 x double> %a0, <2 x double> %a1, <2 x ; X32: # BB#0: ; X32-NEXT: movapd %xmm0, %xmm3 ; X32-NEXT: movaps %xmm2, %xmm0 -; X32-NEXT: blendvpd %xmm1, %xmm3 +; X32-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; X32-NEXT: movapd %xmm3, %xmm0 ; X32-NEXT: retl ; @@ -87,7 +87,7 @@ define <2 x double> @test_mm_blendv_pd(<2 x double> %a0, <2 x double> %a1, <2 x ; X64: # BB#0: ; X64-NEXT: movapd %xmm0, %xmm3 ; X64-NEXT: movaps %xmm2, %xmm0 -; X64-NEXT: blendvpd %xmm1, %xmm3 +; X64-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; X64-NEXT: movapd %xmm3, %xmm0 ; X64-NEXT: retq %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) @@ -100,7 +100,7 @@ define <4 x float> @test_mm_blendv_ps(<4 x float> %a0, <4 x float> %a1, <4 x flo ; X32: # BB#0: ; X32-NEXT: movaps %xmm0, %xmm3 ; X32-NEXT: movaps %xmm2, %xmm0 -; X32-NEXT: blendvps %xmm1, %xmm3 +; X32-NEXT: blendvps %xmm0, %xmm1, %xmm3 ; X32-NEXT: movaps %xmm3, %xmm0 ; X32-NEXT: retl ; @@ -108,7 +108,7 @@ define <4 x float> @test_mm_blendv_ps(<4 x float> %a0, <4 x float> %a1, <4 x flo ; X64: # BB#0: ; X64-NEXT: movaps %xmm0, %xmm3 ; X64-NEXT: movaps %xmm2, %xmm0 -; X64-NEXT: blendvps %xmm1, %xmm3 +; X64-NEXT: blendvps %xmm0, %xmm1, %xmm3 ; X64-NEXT: movaps %xmm3, %xmm0 ; X64-NEXT: retq %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) diff --git a/test/CodeGen/X86/sse41-intrinsics-x86.ll b/test/CodeGen/X86/sse41-intrinsics-x86.ll index 321b4e8108b..4dd14cac57d 100644 --- a/test/CodeGen/X86/sse41-intrinsics-x86.ll +++ b/test/CodeGen/X86/sse41-intrinsics-x86.ll @@ -8,7 +8,7 @@ define <2 x double> @test_x86_sse41_blendvpd(<2 x double> %a0, <2 x double> %a1, ; SSE41: ## BB#0: ; SSE41-NEXT: movapd %xmm0, %xmm3 ## encoding: [0x66,0x0f,0x28,0xd8] ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2] -; SSE41-NEXT: blendvpd %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x15,0xd9] +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x15,0xd9] ; SSE41-NEXT: movapd %xmm3, %xmm0 ## encoding: [0x66,0x0f,0x28,0xc3] ; SSE41-NEXT: retl ## encoding: [0xc3] ; @@ -27,7 +27,7 @@ define <4 x float> @test_x86_sse41_blendvps(<4 x float> %a0, <4 x float> %a1, <4 ; SSE41: ## BB#0: ; SSE41-NEXT: movaps %xmm0, %xmm3 ## encoding: [0x0f,0x28,0xd8] ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2] -; SSE41-NEXT: blendvps %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x14,0xd9] +; SSE41-NEXT: blendvps %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x14,0xd9] ; SSE41-NEXT: movaps %xmm3, %xmm0 ## encoding: [0x0f,0x28,0xc3] ; SSE41-NEXT: retl ## encoding: [0xc3] ; @@ -140,7 +140,7 @@ define <16 x i8> @test_x86_sse41_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8 ; SSE41: ## BB#0: ; SSE41-NEXT: movdqa %xmm0, %xmm3 ## encoding: [0x66,0x0f,0x6f,0xd8] ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2] -; SSE41-NEXT: pblendvb %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x10,0xd9] +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x10,0xd9] ; SSE41-NEXT: movdqa %xmm3, %xmm0 ## encoding: [0x66,0x0f,0x6f,0xc3] ; SSE41-NEXT: retl ## encoding: [0xc3] ; diff --git a/test/CodeGen/X86/sse41.ll b/test/CodeGen/X86/sse41.ll index 4a009023a7b..eabaa63de8f 100644 --- a/test/CodeGen/X86/sse41.ll +++ b/test/CodeGen/X86/sse41.ll @@ -771,7 +771,7 @@ define <8 x i16> @blendvb_fallback(<8 x i1> %mask, <8 x i16> %x, <8 x i16> %y) { ; X32: ## BB#0: ; X32-NEXT: psllw $15, %xmm0 ; X32-NEXT: psraw $15, %xmm0 -; X32-NEXT: pblendvb %xmm1, %xmm2 +; X32-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; X32-NEXT: movdqa %xmm2, %xmm0 ; X32-NEXT: retl ; @@ -779,7 +779,7 @@ define <8 x i16> @blendvb_fallback(<8 x i1> %mask, <8 x i16> %x, <8 x i16> %y) { ; X64: ## BB#0: ; X64-NEXT: psllw $15, %xmm0 ; X64-NEXT: psraw $15, %xmm0 -; X64-NEXT: pblendvb %xmm1, %xmm2 +; X64-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; X64-NEXT: movdqa %xmm2, %xmm0 ; X64-NEXT: retq %ret = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %y diff --git a/test/CodeGen/X86/stack-folding-fp-sse42.ll b/test/CodeGen/X86/stack-folding-fp-sse42.ll index c57782721a6..daa903bc866 100644 --- a/test/CodeGen/X86/stack-folding-fp-sse42.ll +++ b/test/CodeGen/X86/stack-folding-fp-sse42.ll @@ -148,7 +148,7 @@ define <4 x float> @stack_fold_blendps(<4 x float> %a0, <4 x float> %a1) { define <2 x double> @stack_fold_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %c) { ;CHECK-LABEL: stack_fold_blendvpd - ;CHECK: blendvpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload + ;CHECK: blendvpd %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"() %2 = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a1, <2 x double> %c, <2 x double> %a0) ret <2 x double> %2 @@ -157,7 +157,7 @@ declare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x d define <4 x float> @stack_fold_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %c) { ;CHECK-LABEL: stack_fold_blendvps - ;CHECK: blendvps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload + ;CHECK: blendvps %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"() %2 = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a1, <4 x float> %c, <4 x float> %a0) ret <4 x float> %2 diff --git a/test/CodeGen/X86/stack-folding-int-sse42.ll b/test/CodeGen/X86/stack-folding-int-sse42.ll index a839a315e76..5c6f697610a 100644 --- a/test/CodeGen/X86/stack-folding-int-sse42.ll +++ b/test/CodeGen/X86/stack-folding-int-sse42.ll @@ -318,7 +318,7 @@ declare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone define <16 x i8> @stack_fold_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %c) { ;CHECK-LABEL: stack_fold_pblendvb - ;CHECK: pblendvb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload + ;CHECK: pblendvb %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"() %2 = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a1, <16 x i8> %c, <16 x i8> %a0) ret <16 x i8> %2 diff --git a/test/CodeGen/X86/vec_minmax_sint.ll b/test/CodeGen/X86/vec_minmax_sint.ll index 419eb2bed74..5999116deb9 100644 --- a/test/CodeGen/X86/vec_minmax_sint.ll +++ b/test/CodeGen/X86/vec_minmax_sint.ll @@ -46,7 +46,7 @@ define <2 x i64> @max_gt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: pand %xmm5, %xmm3 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3] ; SSE41-NEXT: por %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -54,7 +54,7 @@ define <2 x i64> @max_gt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42: # BB#0: ; SSE42-NEXT: movdqa %xmm0, %xmm2 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -130,9 +130,9 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pand %xmm7, %xmm4 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3] ; SSE41-NEXT: por %xmm4, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -143,9 +143,9 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: movdqa %xmm1, %xmm5 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm5 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -429,7 +429,7 @@ define <2 x i64> @max_ge_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: por %xmm0, %xmm3 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE41-NEXT: pxor %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -440,7 +440,7 @@ define <2 x i64> @max_ge_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pcmpgtq %xmm2, %xmm3 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE42-NEXT: pxor %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -527,9 +527,9 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3] ; SSE41-NEXT: por %xmm6, %xmm0 ; SSE41-NEXT: pxor %xmm9, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -544,9 +544,9 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: movdqa %xmm2, %xmm6 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm6 ; SSE42-NEXT: pxor %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -844,7 +844,7 @@ define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: pand %xmm5, %xmm3 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3] ; SSE41-NEXT: por %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -853,7 +853,7 @@ define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: movdqa %xmm0, %xmm2 ; SSE42-NEXT: movdqa %xmm1, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -929,9 +929,9 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pand %xmm7, %xmm4 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3] ; SSE41-NEXT: por %xmm4, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -943,9 +943,9 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pcmpgtq %xmm1, %xmm5 ; SSE42-NEXT: movdqa %xmm2, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -1223,7 +1223,7 @@ define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: por %xmm0, %xmm3 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE41-NEXT: pxor %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -1233,7 +1233,7 @@ define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE42-NEXT: pcmpeqd %xmm3, %xmm3 ; SSE42-NEXT: pxor %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -1320,9 +1320,9 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3] ; SSE41-NEXT: por %xmm6, %xmm0 ; SSE41-NEXT: pxor %xmm9, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -1336,9 +1336,9 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pxor %xmm6, %xmm5 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE42-NEXT: pxor %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq diff --git a/test/CodeGen/X86/vec_minmax_uint.ll b/test/CodeGen/X86/vec_minmax_uint.ll index 6e48423c152..d9b6e12e409 100644 --- a/test/CodeGen/X86/vec_minmax_uint.ll +++ b/test/CodeGen/X86/vec_minmax_uint.ll @@ -46,7 +46,7 @@ define <2 x i64> @max_gt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: pand %xmm5, %xmm3 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3] ; SSE41-NEXT: por %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -58,7 +58,7 @@ define <2 x i64> @max_gt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pxor %xmm0, %xmm3 ; SSE42-NEXT: pxor %xmm2, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -137,9 +137,9 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pand %xmm7, %xmm4 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3] ; SSE41-NEXT: por %xmm4, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -157,9 +157,9 @@ define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pxor %xmm0, %xmm6 ; SSE42-NEXT: pxor %xmm4, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -468,7 +468,7 @@ define <2 x i64> @max_ge_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: por %xmm0, %xmm3 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE41-NEXT: pxor %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -481,7 +481,7 @@ define <2 x i64> @max_ge_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE42-NEXT: pxor %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -571,9 +571,9 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3] ; SSE41-NEXT: por %xmm6, %xmm0 ; SSE41-NEXT: pxor %xmm9, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -594,9 +594,9 @@ define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pxor %xmm2, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE42-NEXT: pxor %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -910,7 +910,7 @@ define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: pand %xmm5, %xmm3 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3] ; SSE41-NEXT: por %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -922,7 +922,7 @@ define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pxor %xmm0, %xmm3 ; SSE42-NEXT: pxor %xmm1, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -1001,9 +1001,9 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pand %xmm7, %xmm4 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3] ; SSE41-NEXT: por %xmm4, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -1021,9 +1021,9 @@ define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pxor %xmm0, %xmm6 ; SSE42-NEXT: pxor %xmm2, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq @@ -1330,7 +1330,7 @@ define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE41-NEXT: por %xmm0, %xmm3 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE41-NEXT: pxor %xmm3, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -1344,7 +1344,7 @@ define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) { ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE42-NEXT: pxor %xmm3, %xmm0 -; SSE42-NEXT: blendvpd %xmm2, %xmm1 +; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE42-NEXT: movapd %xmm1, %xmm0 ; SSE42-NEXT: retq ; @@ -1434,9 +1434,9 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3] ; SSE41-NEXT: por %xmm6, %xmm0 ; SSE41-NEXT: pxor %xmm9, %xmm0 -; SSE41-NEXT: blendvpd %xmm8, %xmm2 +; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: movdqa %xmm5, %xmm0 -; SSE41-NEXT: blendvpd %xmm1, %xmm3 +; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movapd %xmm2, %xmm0 ; SSE41-NEXT: movapd %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -1457,9 +1457,9 @@ define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) { ; SSE42-NEXT: pxor %xmm4, %xmm0 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE42-NEXT: pxor %xmm6, %xmm0 -; SSE42-NEXT: blendvpd %xmm4, %xmm2 +; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE42-NEXT: movdqa %xmm5, %xmm0 -; SSE42-NEXT: blendvpd %xmm1, %xmm3 +; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE42-NEXT: movapd %xmm2, %xmm0 ; SSE42-NEXT: movapd %xmm3, %xmm1 ; SSE42-NEXT: retq diff --git a/test/CodeGen/X86/vec_shift4.ll b/test/CodeGen/X86/vec_shift4.ll index 66229361990..bef2438aecd 100644 --- a/test/CodeGen/X86/vec_shift4.ll +++ b/test/CodeGen/X86/vec_shift4.ll @@ -39,18 +39,18 @@ define <2 x i64> @shl2(<16 x i8> %r, <16 x i8> %a) nounwind readnone ssp { ; X32-NEXT: psllw $4, %xmm3 ; X32-NEXT: pand {{\.LCPI.*}}, %xmm3 ; X32-NEXT: movdqa %xmm1, %xmm0 -; X32-NEXT: pblendvb %xmm3, %xmm2 +; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X32-NEXT: movdqa %xmm2, %xmm3 ; X32-NEXT: psllw $2, %xmm3 ; X32-NEXT: pand {{\.LCPI.*}}, %xmm3 ; X32-NEXT: paddb %xmm1, %xmm1 ; X32-NEXT: movdqa %xmm1, %xmm0 -; X32-NEXT: pblendvb %xmm3, %xmm2 +; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X32-NEXT: movdqa %xmm2, %xmm3 ; X32-NEXT: paddb %xmm3, %xmm3 ; X32-NEXT: paddb %xmm1, %xmm1 ; X32-NEXT: movdqa %xmm1, %xmm0 -; X32-NEXT: pblendvb %xmm3, %xmm2 +; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X32-NEXT: movdqa %xmm2, %xmm0 ; X32-NEXT: retl ; @@ -62,18 +62,18 @@ define <2 x i64> @shl2(<16 x i8> %r, <16 x i8> %a) nounwind readnone ssp { ; X64-NEXT: psllw $4, %xmm3 ; X64-NEXT: pand {{.*}}(%rip), %xmm3 ; X64-NEXT: movdqa %xmm1, %xmm0 -; X64-NEXT: pblendvb %xmm3, %xmm2 +; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X64-NEXT: movdqa %xmm2, %xmm3 ; X64-NEXT: psllw $2, %xmm3 ; X64-NEXT: pand {{.*}}(%rip), %xmm3 ; X64-NEXT: paddb %xmm1, %xmm1 ; X64-NEXT: movdqa %xmm1, %xmm0 -; X64-NEXT: pblendvb %xmm3, %xmm2 +; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X64-NEXT: movdqa %xmm2, %xmm3 ; X64-NEXT: paddb %xmm3, %xmm3 ; X64-NEXT: paddb %xmm1, %xmm1 ; X64-NEXT: movdqa %xmm1, %xmm0 -; X64-NEXT: pblendvb %xmm3, %xmm2 +; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; X64-NEXT: movdqa %xmm2, %xmm0 ; X64-NEXT: retq entry: diff --git a/test/CodeGen/X86/vector-blend.ll b/test/CodeGen/X86/vector-blend.ll index d3bac61959d..a05a981daa1 100644 --- a/test/CodeGen/X86/vector-blend.ll +++ b/test/CodeGen/X86/vector-blend.ll @@ -274,7 +274,7 @@ define <16 x i8> @vsel_i8(<16 x i8> %v1, <16 x i8> %v2) { ; SSE41: # BB#0: # %entry ; SSE41-NEXT: movdqa %xmm0, %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -500,7 +500,7 @@ define <2 x double> @testa(<2 x double> %x, <2 x double> %y) { ; SSE41-NEXT: movapd %xmm0, %xmm2 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: cmplepd %xmm2, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -539,7 +539,7 @@ define <2 x double> @testb(<2 x double> %x, <2 x double> %y) { ; SSE41-NEXT: movapd %xmm0, %xmm2 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: cmpnlepd %xmm2, %xmm0 -; SSE41-NEXT: blendvpd %xmm2, %xmm1 +; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movapd %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -653,8 +653,8 @@ define <32 x i8> @constant_pblendvb_avx2(<32 x i8> %xyzw, <32 x i8> %abcd) { ; SSE41: # BB#0: # %entry ; SSE41-NEXT: movdqa %xmm0, %xmm4 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0] -; SSE41-NEXT: pblendvb %xmm4, %xmm2 -; SSE41-NEXT: pblendvb %xmm1, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm3 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: movdqa %xmm3, %xmm1 ; SSE41-NEXT: retq @@ -822,7 +822,7 @@ define <4 x i32> @blend_logic_v4i32(<4 x i32> %b, <4 x i32> %a, <4 x i32> %c) { ; SSE41-LABEL: blend_logic_v4i32: ; SSE41: # BB#0: # %entry ; SSE41-NEXT: psrad $31, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -870,9 +870,9 @@ define <8 x i32> @blend_logic_v8i32(<8 x i32> %b, <8 x i32> %a, <8 x i32> %c) { ; SSE41: # BB#0: # %entry ; SSE41-NEXT: psrad $31, %xmm1 ; SSE41-NEXT: psrad $31, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm4 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm5 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm5 ; SSE41-NEXT: movdqa %xmm4, %xmm0 ; SSE41-NEXT: movdqa %xmm5, %xmm1 ; SSE41-NEXT: retq @@ -1028,7 +1028,7 @@ define <4 x i32> @blend_neg_logic_v4i32_2(<4 x i32> %v, <4 x i32> %c) { ; SSE41-NEXT: pxor %xmm3, %xmm3 ; SSE41-NEXT: psubd %xmm2, %xmm3 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: blendvps %xmm2, %xmm3 +; SSE41-NEXT: blendvps %xmm0, %xmm2, %xmm3 ; SSE41-NEXT: movaps %xmm3, %xmm0 ; SSE41-NEXT: retq ; diff --git a/test/CodeGen/X86/vector-rotate-128.ll b/test/CodeGen/X86/vector-rotate-128.ll index 8fb057bae0a..5921a79b9e6 100644 --- a/test/CodeGen/X86/vector-rotate-128.ll +++ b/test/CodeGen/X86/vector-rotate-128.ll @@ -336,21 +336,21 @@ define <8 x i16> @var_rotate_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind { ; SSE41-NEXT: psllw $8, %xmm6 ; SSE41-NEXT: movdqa %xmm3, %xmm5 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm6, %xmm5 +; SSE41-NEXT: pblendvb %xmm0, %xmm6, %xmm5 ; SSE41-NEXT: movdqa %xmm5, %xmm1 ; SSE41-NEXT: psllw $4, %xmm1 ; SSE41-NEXT: movdqa %xmm4, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm5 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5 ; SSE41-NEXT: movdqa %xmm5, %xmm1 ; SSE41-NEXT: psllw $2, %xmm1 ; SSE41-NEXT: paddw %xmm4, %xmm4 ; SSE41-NEXT: movdqa %xmm4, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm5 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5 ; SSE41-NEXT: movdqa %xmm5, %xmm1 ; SSE41-NEXT: psllw $1, %xmm1 ; SSE41-NEXT: paddw %xmm4, %xmm4 ; SSE41-NEXT: movdqa %xmm4, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm5 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: psllw $12, %xmm0 ; SSE41-NEXT: psllw $4, %xmm2 @@ -360,21 +360,21 @@ define <8 x i16> @var_rotate_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind { ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psrlw $8, %xmm4 ; SSE41-NEXT: movdqa %xmm2, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm2 ; SSE41-NEXT: psrlw $4, %xmm2 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm2 ; SSE41-NEXT: psrlw $2, %xmm2 ; SSE41-NEXT: paddw %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm2 ; SSE41-NEXT: psrlw $1, %xmm2 ; SSE41-NEXT: paddw %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3 ; SSE41-NEXT: por %xmm5, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 ; SSE41-NEXT: retq @@ -585,18 +585,18 @@ define <16 x i8> @var_rotate_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5 ; SSE41-NEXT: movdqa %xmm1, %xmm4 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm5, %xmm4 +; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4 ; SSE41-NEXT: movdqa %xmm4, %xmm5 ; SSE41-NEXT: psllw $2, %xmm5 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm5, %xmm4 +; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4 ; SSE41-NEXT: movdqa %xmm4, %xmm5 ; SSE41-NEXT: paddb %xmm5, %xmm5 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm5, %xmm4 +; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4 ; SSE41-NEXT: psllw $5, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: paddb %xmm3, %xmm3 @@ -604,18 +604,18 @@ define <16 x i8> @var_rotate_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: psrlw $4, %xmm5 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5 ; SSE41-NEXT: movdqa %xmm2, %xmm0 -; SSE41-NEXT: pblendvb %xmm5, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psrlw $2, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psrlw $1, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: por %xmm4, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq @@ -1108,31 +1108,31 @@ define <16 x i8> @constant_rotate_v16i8(<16 x i8> %a) nounwind { ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,57600,41152,24704,8256] ; SSE41-NEXT: movdqa %xmm1, %xmm2 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: psllw $2, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psrlw $4, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [57600,41152,24704,8256,8192,24640,41088,57536] -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psrlw $2, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psrlw $1, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: por %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq diff --git a/test/CodeGen/X86/vector-shift-ashr-128.ll b/test/CodeGen/X86/vector-shift-ashr-128.ll index a2ba4274b0f..ba520540d80 100644 --- a/test/CodeGen/X86/vector-shift-ashr-128.ll +++ b/test/CodeGen/X86/vector-shift-ashr-128.ll @@ -278,21 +278,21 @@ define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind { ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psraw $8, %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psraw $4, %xmm1 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psraw $2, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psraw $1, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -467,29 +467,29 @@ define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15] ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $4, %xmm4 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $2, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $1, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: psrlw $8, %xmm3 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $4, %xmm2 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $2, %xmm2 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $1, %xmm2 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: psrlw $8, %xmm1 ; SSE41-NEXT: packuswb %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 @@ -842,29 +842,29 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15] ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $4, %xmm4 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $2, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm4 ; SSE41-NEXT: psraw $1, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm3 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3 ; SSE41-NEXT: psrlw $8, %xmm3 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7] ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7] ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $4, %xmm2 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $2, %xmm2 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psraw $1, %xmm2 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: psrlw $8, %xmm1 ; SSE41-NEXT: packuswb %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 @@ -1372,29 +1372,29 @@ define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) nounwind { ; SSE41-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm1[8],xmm2[9],xmm1[9],xmm2[10],xmm1[10],xmm2[11],xmm1[11],xmm2[12],xmm1[12],xmm2[13],xmm1[13],xmm2[14],xmm1[14],xmm2[15],xmm1[15] ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psraw $4, %xmm4 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psraw $2, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psraw $1, %xmm4 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: psrlw $8, %xmm2 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7] ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7] ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psraw $4, %xmm3 -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psraw $2, %xmm3 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm3 ; SSE41-NEXT: psraw $1, %xmm3 ; SSE41-NEXT: paddw %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1 ; SSE41-NEXT: psrlw $8, %xmm1 ; SSE41-NEXT: packuswb %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 diff --git a/test/CodeGen/X86/vector-shift-lshr-128.ll b/test/CodeGen/X86/vector-shift-lshr-128.ll index 1d3ef3e2255..9b44ad1dac3 100644 --- a/test/CodeGen/X86/vector-shift-lshr-128.ll +++ b/test/CodeGen/X86/vector-shift-lshr-128.ll @@ -249,21 +249,21 @@ define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind { ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psrlw $8, %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psrlw $4, %xmm1 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psrlw $2, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psrlw $1, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -411,19 +411,19 @@ define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: psrlw $4, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: psrlw $2, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: psrlw $1, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -684,18 +684,18 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: psrlw $4, %xmm4 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psrlw $2, %xmm1 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psrlw $1, %xmm1 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -1105,17 +1105,17 @@ define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) nounwind { ; SSE41-NEXT: psrlw $4, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,49376,32928,16480,32] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psrlw $2, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psrlw $1, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; diff --git a/test/CodeGen/X86/vector-shift-shl-128.ll b/test/CodeGen/X86/vector-shift-shl-128.ll index fd6dd2197a5..568bf6e974f 100644 --- a/test/CodeGen/X86/vector-shift-shl-128.ll +++ b/test/CodeGen/X86/vector-shift-shl-128.ll @@ -206,21 +206,21 @@ define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind { ; SSE41-NEXT: movdqa %xmm2, %xmm4 ; SSE41-NEXT: psllw $8, %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psllw $4, %xmm1 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psllw $2, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psllw $1, %xmm1 ; SSE41-NEXT: paddw %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -365,18 +365,18 @@ define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: psllw $4, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: psllw $2, %xmm3 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE41-NEXT: paddb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm3 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: paddb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm3, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -632,17 +632,17 @@ define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind { ; SSE41-NEXT: psllw $4, %xmm4 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4 ; SSE41-NEXT: movdqa %xmm1, %xmm0 -; SSE41-NEXT: pblendvb %xmm4, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: psllw $2, %xmm1 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm1 ; SSE41-NEXT: paddb %xmm1, %xmm1 ; SSE41-NEXT: paddb %xmm3, %xmm3 ; SSE41-NEXT: movdqa %xmm3, %xmm0 -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -961,16 +961,16 @@ define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) nounwind { ; SSE41-NEXT: psllw $4, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,49376,32928,16480,32] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: psllw $2, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm2 ; SSE41-NEXT: paddb %xmm2, %xmm2 ; SSE41-NEXT: paddb %xmm0, %xmm0 -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; diff --git a/test/CodeGen/X86/vector-shuffle-128-v16.ll b/test/CodeGen/X86/vector-shuffle-128-v16.ll index 3e19da2cd07..cb710c8205b 100644 --- a/test/CodeGen/X86/vector-shuffle-128-v16.ll +++ b/test/CodeGen/X86/vector-shuffle-128-v16.ll @@ -411,7 +411,7 @@ define <16 x i8> @shuffle_v16i8_00_17_02_19_04_21_06_23_08_25_10_27_12_29_14_31( ; SSE41: # BB#0: ; SSE41-NEXT: movdqa %xmm0, %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -451,7 +451,7 @@ define <16 x i8> @shuffle_v16i8_00_01_02_19_04_05_06_23_08_09_10_27_12_13_14_31( ; SSE41: # BB#0: ; SSE41-NEXT: movdqa %xmm0, %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -510,7 +510,7 @@ define <16 x i8> @shuffle_v16i8_00_01_02_03_20_05_06_23_08_09_10_11_28_13_14_31( ; SSE41: # BB#0: ; SSE41-NEXT: movdqa %xmm0, %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,255,0,255,255,0,255,255,255,255,0,255,255,0] -; SSE41-NEXT: pblendvb %xmm2, %xmm1 +; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -551,7 +551,7 @@ define <16 x i8> @shuffle_v16i8_16_17_18_19_04_05_06_07_24_25_10_11_28_13_30_15( ; SSE41: # BB#0: ; SSE41-NEXT: movdqa %xmm0, %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,255,0,0,0,0,255,255,0,0,255,0,255,0] -; SSE41-NEXT: pblendvb %xmm1, %xmm2 +; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; diff --git a/test/CodeGen/X86/vselect-minmax.ll b/test/CodeGen/X86/vselect-minmax.ll index 8e9f1d98091..afe5f661559 100644 --- a/test/CodeGen/X86/vselect-minmax.ll +++ b/test/CodeGen/X86/vselect-minmax.ll @@ -4839,13 +4839,13 @@ define <8 x i64> @test121(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11 ; SSE4-NEXT: movdqa %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -4983,13 +4983,13 @@ define <8 x i64> @test122(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm12, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5113,13 +5113,13 @@ define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: movdqa %xmm1, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5259,13 +5259,13 @@ define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: movdqa %xmm4, %xmm12 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5402,13 +5402,13 @@ define <8 x i64> @test125(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm12 ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5573,13 +5573,13 @@ define <8 x i64> @test126(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm9, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm9, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5730,13 +5730,13 @@ define <8 x i64> @test127(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm12 ; SSE4-NEXT: pxor %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -5902,13 +5902,13 @@ define <8 x i64> @test128(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm9, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm5 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 @@ -7562,13 +7562,13 @@ define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11 ; SSE4-NEXT: movdqa %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -7703,13 +7703,13 @@ define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm12, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -7834,13 +7834,13 @@ define <8 x i64> @test155(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: movdqa %xmm1, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -7977,13 +7977,13 @@ define <8 x i64> @test156(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: movdqa %xmm4, %xmm12 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -8121,13 +8121,13 @@ define <8 x i64> @test157(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm12 ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -8289,13 +8289,13 @@ define <8 x i64> @test158(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -8447,13 +8447,13 @@ define <8 x i64> @test159(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm12 ; SSE4-NEXT: pxor %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -8616,13 +8616,13 @@ define <8 x i64> @test160(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0 ; SSE4-NEXT: pxor %xmm12, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8 ; SSE4-NEXT: movdqa %xmm11, %xmm0 -; SSE4-NEXT: blendvpd %xmm5, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE4-NEXT: movdqa %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm6, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2 ; SSE4-NEXT: movdqa %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm7, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3 ; SSE4-NEXT: movapd %xmm8, %xmm0 ; SSE4-NEXT: retq ; @@ -8724,9 +8724,9 @@ define <4 x i64> @test161(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -8807,9 +8807,9 @@ define <4 x i64> @test162(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm6, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -8886,9 +8886,9 @@ define <4 x i64> @test163(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: movdqa %xmm1, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -8970,9 +8970,9 @@ define <4 x i64> @test164(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: movdqa %xmm2, %xmm6 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -9056,9 +9056,9 @@ define <4 x i64> @test165(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm6 ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -9154,9 +9154,9 @@ define <4 x i64> @test166(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -9248,9 +9248,9 @@ define <4 x i64> @test167(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm6 ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -9346,9 +9346,9 @@ define <4 x i64> @test168(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm4, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm3 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: movapd %xmm3, %xmm1 ; SSE4-NEXT: retq @@ -9436,9 +9436,9 @@ define <4 x i64> @test169(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9518,9 +9518,9 @@ define <4 x i64> @test170(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm6, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9598,9 +9598,9 @@ define <4 x i64> @test171(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: movdqa %xmm1, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9681,9 +9681,9 @@ define <4 x i64> @test172(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: movdqa %xmm2, %xmm6 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9768,9 +9768,9 @@ define <4 x i64> @test173(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm6 ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9865,9 +9865,9 @@ define <4 x i64> @test174(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -9960,9 +9960,9 @@ define <4 x i64> @test175(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm6 ; SSE4-NEXT: pxor %xmm4, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -10057,9 +10057,9 @@ define <4 x i64> @test176(<4 x i64> %a, <4 x i64> %b) { ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 ; SSE4-NEXT: pxor %xmm6, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: blendvpd %xmm3, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: retq ; @@ -10127,7 +10127,7 @@ define <2 x i64> @test177(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: movdqa %xmm0, %xmm2 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10182,7 +10182,7 @@ define <2 x i64> @test178(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10236,7 +10236,7 @@ define <2 x i64> @test179(<2 x i64> %a, <2 x i64> %b) { ; SSE4: # BB#0: # %entry ; SSE4-NEXT: movdqa %xmm0, %xmm2 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10292,7 +10292,7 @@ define <2 x i64> @test180(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10350,7 +10350,7 @@ define <2 x i64> @test181(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm3 ; SSE4-NEXT: pxor %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10415,7 +10415,7 @@ define <2 x i64> @test182(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10479,7 +10479,7 @@ define <2 x i64> @test183(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm3 ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10543,7 +10543,7 @@ define <2 x i64> @test184(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm2, %xmm1 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1 ; SSE4-NEXT: movapd %xmm1, %xmm0 ; SSE4-NEXT: retq ; @@ -10605,7 +10605,7 @@ define <2 x i64> @test185(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: movdqa %xmm0, %xmm2 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10660,7 +10660,7 @@ define <2 x i64> @test186(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10715,7 +10715,7 @@ define <2 x i64> @test187(<2 x i64> %a, <2 x i64> %b) { ; SSE4: # BB#0: # %entry ; SSE4-NEXT: movdqa %xmm0, %xmm2 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10771,7 +10771,7 @@ define <2 x i64> @test188(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10830,7 +10830,7 @@ define <2 x i64> @test189(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm3 ; SSE4-NEXT: pxor %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10895,7 +10895,7 @@ define <2 x i64> @test190(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -10960,7 +10960,7 @@ define <2 x i64> @test191(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pxor %xmm0, %xmm3 ; SSE4-NEXT: pxor %xmm2, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; @@ -11024,7 +11024,7 @@ define <2 x i64> @test192(<2 x i64> %a, <2 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm1, %xmm2 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2 ; SSE4-NEXT: movapd %xmm2, %xmm0 ; SSE4-NEXT: retq ; diff --git a/test/MC/X86/x86-32-coverage.s b/test/MC/X86/x86-32-coverage.s index 261b7276a89..6dc91dc9d0e 100644 --- a/test/MC/X86/x86-32-coverage.s +++ b/test/MC/X86/x86-32-coverage.s @@ -10526,9 +10526,9 @@ // CHECK: invlpga %ecx, %eax invlpga %ecx, %eax -// CHECK: blendvps (%eax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08] +// CHECK: blendvps %xmm0, (%eax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08] blendvps (%eax), %xmm1 -// CHECK: blendvps %xmm2, %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0xca] +// CHECK: blendvps %xmm0, %xmm2, %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0xca] blendvps %xmm2, %xmm1 // These instructions can take an unsigned 8-bit mask as well as a signed 8-bit @@ -10563,29 +10563,29 @@ insertps $-64, %xmm2, %xmm1 // PR13253 handle implicit optional third argument that must always be xmm0 -// CHECK: pblendvb %xmm2, %xmm1 +// CHECK: pblendvb %xmm0, %xmm2, %xmm1 pblendvb %xmm2, %xmm1 -// CHECK: pblendvb %xmm2, %xmm1 +// CHECK: pblendvb %xmm0, %xmm2, %xmm1 pblendvb %xmm0, %xmm2, %xmm1 -// CHECK: pblendvb (%eax), %xmm1 +// CHECK: pblendvb %xmm0, (%eax), %xmm1 pblendvb (%eax), %xmm1 -// CHECK: pblendvb (%eax), %xmm1 +// CHECK: pblendvb %xmm0, (%eax), %xmm1 pblendvb %xmm0, (%eax), %xmm1 -// CHECK: blendvpd %xmm2, %xmm1 +// CHECK: blendvpd %xmm0, %xmm2, %xmm1 blendvpd %xmm2, %xmm1 -// CHECK: blendvpd %xmm2, %xmm1 +// CHECK: blendvpd %xmm0, %xmm2, %xmm1 blendvpd %xmm0, %xmm2, %xmm1 -// CHECK: blendvpd (%eax), %xmm1 +// CHECK: blendvpd %xmm0, (%eax), %xmm1 blendvpd (%eax), %xmm1 -// CHECK: blendvpd (%eax), %xmm1 +// CHECK: blendvpd %xmm0, (%eax), %xmm1 blendvpd %xmm0, (%eax), %xmm1 -// CHECK: blendvps %xmm2, %xmm1 +// CHECK: blendvps %xmm0, %xmm2, %xmm1 blendvps %xmm2, %xmm1 -// CHECK: blendvps %xmm2, %xmm1 +// CHECK: blendvps %xmm0, %xmm2, %xmm1 blendvps %xmm0, %xmm2, %xmm1 -// CHECK: blendvps (%eax), %xmm1 +// CHECK: blendvps %xmm0, (%eax), %xmm1 blendvps (%eax), %xmm1 -// CHECK: blendvps (%eax), %xmm1 +// CHECK: blendvps %xmm0, (%eax), %xmm1 blendvps %xmm0, (%eax), %xmm1