def rr0 : SS48I<opc, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src2),
!strconcat(OpcodeStr,
- "\t{$src2, $dst|$dst, $src2}"),
+ "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
[(set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0))],
itins.rr>, Sched<[itins.Sched]>;
def rm0 : SS48I<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, x86memop:$src2),
!strconcat(OpcodeStr,
- "\t{$src2, $dst|$dst, $src2}"),
+ "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
[(set VR128:$dst,
(IntId VR128:$src1,
(bitconvert (mem_frag addr:$src2)), XMM0))],
DEFAULT_ITINS_VARBLENDSCHED>;
// 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),
; 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:
; 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:
; 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) {
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.
; 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:
; 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:
; 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
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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>
; 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
;
; 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)
; 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
;
; 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)
; 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]
;
; 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]
;
; 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]
;
; 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
;
; 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
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
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
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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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
;
; 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
; 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
; 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
;
; 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:
; 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
;
; 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
;
; 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
;
; 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
; 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
;
; 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
; 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
;
; 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
; 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
; 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
; 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
; 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
; 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
;
; 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
; 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
; 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
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
; 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
; 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
; 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
; 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
; 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
; 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
; 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
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
; 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
; 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
; 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
; 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
; 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
; 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
; 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
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
; 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
;
// 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
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