diff --git a/llvm/lib/Target/X86/X86MCInstLower.cpp b/llvm/lib/Target/X86/X86MCInstLower.cpp --- a/llvm/lib/Target/X86/X86MCInstLower.cpp +++ b/llvm/lib/Target/X86/X86MCInstLower.cpp @@ -876,6 +876,49 @@ case X86::MOVSX64rr32: SimplifyMOVSX(OutMI); break; + + case X86::VCMPPDrri: + case X86::VCMPPDYrri: + case X86::VCMPPSrri: + case X86::VCMPPSYrri: + case X86::VCMPSDrr: + case X86::VCMPSSrr: { + // Swap the operands if it will enable a 2 byte VEX encoding. + // FIXME: Change the immediate to improve opportunities? + if (!X86II::isX86_64ExtendedReg(OutMI.getOperand(1).getReg()) && + X86II::isX86_64ExtendedReg(OutMI.getOperand(2).getReg())) { + unsigned Imm = MI->getOperand(3).getImm() & 0x7; + switch (Imm) { + default: break; + case 0x00: // EQUAL + case 0x03: // UNORDERED + case 0x04: // NOT EQUAL + case 0x07: // ORDERED + std::swap(OutMI.getOperand(1), OutMI.getOperand(2)); + break; + } + } + break; + } + + default: { + // If the instruction is a commutable arithmetic instruction we might be + // able to commute the operands to get a 2 byte VEX prefix. + uint64_t TSFlags = MI->getDesc().TSFlags; + if (MI->getDesc().isCommutable() && + (TSFlags & X86II::EncodingMask) == X86II::VEX && + (TSFlags & X86II::OpMapMask) == X86II::TB && + (TSFlags & X86II::FormMask) == X86II::MRMSrcReg && + !(TSFlags & X86II::VEX_W) && (TSFlags & X86II::VEX_4V) && + OutMI.getNumOperands() == 3 && + MI->getOpcode() != X86::VMOVHLPSrr && + MI->getOpcode() != X86::VUNPCKHPDrr) { + if (!X86II::isX86_64ExtendedReg(OutMI.getOperand(1).getReg()) && + X86II::isX86_64ExtendedReg(OutMI.getOperand(2).getReg())) + std::swap(OutMI.getOperand(1), OutMI.getOperand(2)); + } + break; + } } } diff --git a/llvm/test/CodeGen/X86/avx-intel-ocl.ll b/llvm/test/CodeGen/X86/avx-intel-ocl.ll --- a/llvm/test/CodeGen/X86/avx-intel-ocl.ll +++ b/llvm/test/CodeGen/X86/avx-intel-ocl.ll @@ -51,8 +51,8 @@ ; preserved ymm8-ymm15 ; X64-LABEL: testf16_regs ; X64: call -; X64: vaddps {{%ymm[8-9]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}} -; X64: vaddps {{%ymm[8-9]}}, {{%ymm[0-1]}}, {{%ymm[0-1]}} +; X64: vaddps {{%ymm[0-1]}}, {{%ymm[8-9]}}, {{%ymm[0-1]}} +; X64: vaddps {{%ymm[0-1]}}, {{%ymm[8-9]}}, {{%ymm[0-1]}} ; X64: ret define <16 x float> @testf16_regs(<16 x float> %a, <16 x float> %b) nounwind { diff --git a/llvm/test/CodeGen/X86/avx512-mask-op.ll b/llvm/test/CodeGen/X86/avx512-mask-op.ll --- a/llvm/test/CodeGen/X86/avx512-mask-op.ll +++ b/llvm/test/CodeGen/X86/avx512-mask-op.ll @@ -4906,18 +4906,18 @@ ; KNL-NEXT: vextracti64x4 $1, %zmm1, %ymm6 ; KNL-NEXT: vextracti64x4 $1, %zmm0, %ymm7 ; KNL-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm0, %ymm0 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm7, %ymm7 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm1, %ymm1 +; KNL-NEXT: vpcmpeqw %ymm0, %ymm8, %ymm0 +; KNL-NEXT: vpcmpeqw %ymm7, %ymm8, %ymm7 +; KNL-NEXT: vpcmpeqw %ymm1, %ymm8, %ymm1 ; KNL-NEXT: vpor %ymm1, %ymm0, %ymm0 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm6, %ymm1 +; KNL-NEXT: vpcmpeqw %ymm6, %ymm8, %ymm1 ; KNL-NEXT: vpor %ymm1, %ymm7, %ymm1 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm2, %ymm2 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm5, %ymm5 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm3, %ymm3 +; KNL-NEXT: vpcmpeqw %ymm2, %ymm8, %ymm2 +; KNL-NEXT: vpcmpeqw %ymm5, %ymm8, %ymm5 +; KNL-NEXT: vpcmpeqw %ymm3, %ymm8, %ymm3 ; KNL-NEXT: vpor %ymm3, %ymm2, %ymm2 ; KNL-NEXT: vpand %ymm2, %ymm0, %ymm0 -; KNL-NEXT: vpcmpeqw %ymm8, %ymm4, %ymm2 +; KNL-NEXT: vpcmpeqw %ymm4, %ymm8, %ymm2 ; KNL-NEXT: vpor %ymm2, %ymm5, %ymm2 ; KNL-NEXT: vpand %ymm2, %ymm1, %ymm1 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0 @@ -4992,18 +4992,18 @@ ; AVX512DQ-NEXT: vextracti64x4 $1, %zmm1, %ymm6 ; AVX512DQ-NEXT: vextracti64x4 $1, %zmm0, %ymm7 ; AVX512DQ-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm0, %ymm0 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm7, %ymm7 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm1, %ymm1 +; AVX512DQ-NEXT: vpcmpeqw %ymm0, %ymm8, %ymm0 +; AVX512DQ-NEXT: vpcmpeqw %ymm7, %ymm8, %ymm7 +; AVX512DQ-NEXT: vpcmpeqw %ymm1, %ymm8, %ymm1 ; AVX512DQ-NEXT: vpor %ymm1, %ymm0, %ymm0 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm6, %ymm1 +; AVX512DQ-NEXT: vpcmpeqw %ymm6, %ymm8, %ymm1 ; AVX512DQ-NEXT: vpor %ymm1, %ymm7, %ymm1 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm2, %ymm2 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm5, %ymm5 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm3, %ymm3 +; AVX512DQ-NEXT: vpcmpeqw %ymm2, %ymm8, %ymm2 +; AVX512DQ-NEXT: vpcmpeqw %ymm5, %ymm8, %ymm5 +; AVX512DQ-NEXT: vpcmpeqw %ymm3, %ymm8, %ymm3 ; AVX512DQ-NEXT: vpor %ymm3, %ymm2, %ymm2 ; AVX512DQ-NEXT: vpand %ymm2, %ymm0, %ymm0 -; AVX512DQ-NEXT: vpcmpeqw %ymm8, %ymm4, %ymm2 +; AVX512DQ-NEXT: vpcmpeqw %ymm4, %ymm8, %ymm2 ; AVX512DQ-NEXT: vpor %ymm2, %ymm5, %ymm2 ; AVX512DQ-NEXT: vpand %ymm2, %ymm1, %ymm1 ; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0 @@ -5075,21 +5075,21 @@ ; KNL-NEXT: vextracti64x4 $1, %zmm1, %ymm11 ; KNL-NEXT: vextracti64x4 $1, %zmm0, %ymm7 ; KNL-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; KNL-NEXT: vpcmpeqb %ymm8, %ymm0, %ymm13 +; KNL-NEXT: vpcmpeqb %ymm0, %ymm8, %ymm13 ; KNL-NEXT: vextracti128 $1, %ymm13, %xmm4 -; KNL-NEXT: vpcmpeqb %ymm8, %ymm7, %ymm7 +; KNL-NEXT: vpcmpeqb %ymm7, %ymm8, %ymm7 ; KNL-NEXT: vextracti128 $1, %ymm7, %xmm5 -; KNL-NEXT: vpcmpeqb %ymm8, %ymm1, %ymm1 +; KNL-NEXT: vpcmpeqb %ymm1, %ymm8, %ymm1 ; KNL-NEXT: vextracti128 $1, %ymm1, %xmm6 ; KNL-NEXT: vpor %xmm6, %xmm4, %xmm12 ; KNL-NEXT: vpcmpeqb %ymm8, %ymm11, %ymm6 ; KNL-NEXT: vextracti128 $1, %ymm6, %xmm4 ; KNL-NEXT: vpor %xmm4, %xmm5, %xmm11 -; KNL-NEXT: vpcmpeqb %ymm8, %ymm2, %ymm2 +; KNL-NEXT: vpcmpeqb %ymm2, %ymm8, %ymm2 ; KNL-NEXT: vextracti128 $1, %ymm2, %xmm5 ; KNL-NEXT: vpcmpeqb %ymm8, %ymm10, %ymm10 ; KNL-NEXT: vextracti128 $1, %ymm10, %xmm4 -; KNL-NEXT: vpcmpeqb %ymm8, %ymm3, %ymm3 +; KNL-NEXT: vpcmpeqb %ymm3, %ymm8, %ymm3 ; KNL-NEXT: vextracti128 $1, %ymm3, %xmm0 ; KNL-NEXT: vpor %xmm0, %xmm5, %xmm0 ; KNL-NEXT: vpand %xmm0, %xmm12, %xmm12 @@ -5185,21 +5185,21 @@ ; AVX512DQ-NEXT: vextracti64x4 $1, %zmm1, %ymm11 ; AVX512DQ-NEXT: vextracti64x4 $1, %zmm0, %ymm7 ; AVX512DQ-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm0, %ymm13 +; AVX512DQ-NEXT: vpcmpeqb %ymm0, %ymm8, %ymm13 ; AVX512DQ-NEXT: vextracti128 $1, %ymm13, %xmm4 -; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm7, %ymm7 +; AVX512DQ-NEXT: vpcmpeqb %ymm7, %ymm8, %ymm7 ; AVX512DQ-NEXT: vextracti128 $1, %ymm7, %xmm5 -; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm1, %ymm1 +; AVX512DQ-NEXT: vpcmpeqb %ymm1, %ymm8, %ymm1 ; AVX512DQ-NEXT: vextracti128 $1, %ymm1, %xmm6 ; AVX512DQ-NEXT: vpor %xmm6, %xmm4, %xmm12 ; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm11, %ymm6 ; AVX512DQ-NEXT: vextracti128 $1, %ymm6, %xmm4 ; AVX512DQ-NEXT: vpor %xmm4, %xmm5, %xmm11 -; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm2, %ymm2 +; AVX512DQ-NEXT: vpcmpeqb %ymm2, %ymm8, %ymm2 ; AVX512DQ-NEXT: vextracti128 $1, %ymm2, %xmm5 ; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm10, %ymm10 ; AVX512DQ-NEXT: vextracti128 $1, %ymm10, %xmm4 -; AVX512DQ-NEXT: vpcmpeqb %ymm8, %ymm3, %ymm3 +; AVX512DQ-NEXT: vpcmpeqb %ymm3, %ymm8, %ymm3 ; AVX512DQ-NEXT: vextracti128 $1, %ymm3, %xmm0 ; AVX512DQ-NEXT: vpor %xmm0, %xmm5, %xmm0 ; AVX512DQ-NEXT: vpand %xmm0, %xmm12, %xmm12 diff --git a/llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll b/llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll --- a/llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll +++ b/llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll @@ -386,9 +386,9 @@ ; WIN64-NEXT: .seh_savexmm %xmm8, 0 ; WIN64-NEXT: .seh_endprologue ; WIN64-NEXT: vmovss {{.*#+}} xmm8 = mem[0],zero,zero,zero -; WIN64-NEXT: vaddss %xmm8, %xmm0, %xmm0 +; WIN64-NEXT: vaddss %xmm0, %xmm8, %xmm0 ; WIN64-NEXT: callq test_argRetFloat -; WIN64-NEXT: vaddss %xmm8, %xmm0, %xmm0 +; WIN64-NEXT: vaddss %xmm0, %xmm8, %xmm0 ; WIN64-NEXT: vmovaps (%rsp), %xmm8 # 16-byte Reload ; WIN64-NEXT: addq $16, %rsp ; WIN64-NEXT: popq %rsp @@ -407,9 +407,9 @@ ; LINUXOSX64-NEXT: .cfi_offset %rsp, -16 ; LINUXOSX64-NEXT: .cfi_offset %xmm8, -32 ; LINUXOSX64-NEXT: vmovss {{.*#+}} xmm8 = mem[0],zero,zero,zero -; LINUXOSX64-NEXT: vaddss %xmm8, %xmm0, %xmm0 +; LINUXOSX64-NEXT: vaddss %xmm0, %xmm8, %xmm0 ; LINUXOSX64-NEXT: callq test_argRetFloat -; LINUXOSX64-NEXT: vaddss %xmm8, %xmm0, %xmm0 +; LINUXOSX64-NEXT: vaddss %xmm0, %xmm8, %xmm0 ; LINUXOSX64-NEXT: vmovaps (%rsp), %xmm8 # 16-byte Reload ; LINUXOSX64-NEXT: addq $16, %rsp ; LINUXOSX64-NEXT: .cfi_def_cfa_offset 16 @@ -468,9 +468,9 @@ ; WIN64-NEXT: .seh_savexmm %xmm8, 0 ; WIN64-NEXT: .seh_endprologue ; WIN64-NEXT: vmovsd {{.*#+}} xmm8 = mem[0],zero -; WIN64-NEXT: vaddsd %xmm8, %xmm0, %xmm0 +; WIN64-NEXT: vaddsd %xmm0, %xmm8, %xmm0 ; WIN64-NEXT: callq test_argRetDouble -; WIN64-NEXT: vaddsd %xmm8, %xmm0, %xmm0 +; WIN64-NEXT: vaddsd %xmm0, %xmm8, %xmm0 ; WIN64-NEXT: vmovaps (%rsp), %xmm8 # 16-byte Reload ; WIN64-NEXT: addq $16, %rsp ; WIN64-NEXT: popq %rsp @@ -489,9 +489,9 @@ ; LINUXOSX64-NEXT: .cfi_offset %rsp, -16 ; LINUXOSX64-NEXT: .cfi_offset %xmm8, -32 ; LINUXOSX64-NEXT: vmovsd {{.*#+}} xmm8 = mem[0],zero -; LINUXOSX64-NEXT: vaddsd %xmm8, %xmm0, %xmm0 +; LINUXOSX64-NEXT: vaddsd %xmm0, %xmm8, %xmm0 ; LINUXOSX64-NEXT: callq test_argRetDouble -; LINUXOSX64-NEXT: vaddsd %xmm8, %xmm0, %xmm0 +; LINUXOSX64-NEXT: vaddsd %xmm0, %xmm8, %xmm0 ; LINUXOSX64-NEXT: vmovaps (%rsp), %xmm8 # 16-byte Reload ; LINUXOSX64-NEXT: addq $16, %rsp ; LINUXOSX64-NEXT: .cfi_def_cfa_offset 16 diff --git a/llvm/test/CodeGen/X86/avx512-vselect.ll b/llvm/test/CodeGen/X86/avx512-vselect.ll --- a/llvm/test/CodeGen/X86/avx512-vselect.ll +++ b/llvm/test/CodeGen/X86/avx512-vselect.ll @@ -198,7 +198,7 @@ ; CHECK-KNL-NEXT: vextracti64x4 $1, %zmm0, %ymm8 ; CHECK-KNL-NEXT: vmovdqa 16(%rbp), %ymm9 ; CHECK-KNL-NEXT: vpxor %xmm10, %xmm10, %xmm10 -; CHECK-KNL-NEXT: vpcmpeqb %ymm10, %ymm0, %ymm11 +; CHECK-KNL-NEXT: vpcmpeqb %ymm0, %ymm10, %ymm11 ; CHECK-KNL-NEXT: vpmovsxbw %xmm11, %ymm0 ; CHECK-KNL-NEXT: vpblendvb %ymm0, %ymm1, %ymm5, %ymm0 ; CHECK-KNL-NEXT: vextracti128 $1, %ymm11, %xmm1 diff --git a/llvm/test/CodeGen/X86/madd.ll b/llvm/test/CodeGen/X86/madd.ll --- a/llvm/test/CodeGen/X86/madd.ll +++ b/llvm/test/CodeGen/X86/madd.ll @@ -1675,11 +1675,11 @@ ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm2 ; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm5, %xmm0 -; AVX1-NEXT: vpaddd %xmm8, %xmm6, %xmm1 +; AVX1-NEXT: vpaddd %xmm6, %xmm8, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm8 ; AVX1-NEXT: vextractf128 $1, %ymm9, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm13, %xmm0 -; AVX1-NEXT: vpaddd %xmm9, %xmm7, %xmm1 +; AVX1-NEXT: vpaddd %xmm7, %xmm9, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm9 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm10, %xmm0 diff --git a/llvm/test/CodeGen/X86/masked_compressstore.ll b/llvm/test/CodeGen/X86/masked_compressstore.ll --- a/llvm/test/CodeGen/X86/masked_compressstore.ll +++ b/llvm/test/CodeGen/X86/masked_compressstore.ll @@ -1877,21 +1877,21 @@ ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm8 ; AVX1-NEXT: vpxor %xmm9, %xmm9, %xmm9 ; AVX1-NEXT: vpcmpeqd %xmm9, %xmm8, %xmm8 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 ; AVX1-NEXT: vpackssdw %xmm8, %xmm5, %xmm8 ; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm4, %xmm4 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm4, %xmm9, %xmm4 ; AVX1-NEXT: vpackssdw %xmm5, %xmm4, %xmm4 ; AVX1-NEXT: vpacksswb %xmm8, %xmm4, %xmm4 ; AVX1-NEXT: vpmovmskb %xmm4, %ecx ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm4 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm4, %xmm4 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm7, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm4, %xmm9, %xmm4 +; AVX1-NEXT: vpcmpeqd %xmm7, %xmm9, %xmm5 ; AVX1-NEXT: vpackssdw %xmm4, %xmm5, %xmm4 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm6, %xmm6 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm6, %xmm9, %xmm6 ; AVX1-NEXT: vpackssdw %xmm5, %xmm6, %xmm5 ; AVX1-NEXT: vpacksswb %xmm4, %xmm5, %xmm4 ; AVX1-NEXT: vpmovmskb %xmm4, %eax @@ -2158,12 +2158,12 @@ ; AVX2-LABEL: compressstore_v32f32_v32i32: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm7, %ymm7 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm6, %ymm6 +; AVX2-NEXT: vpcmpeqd %ymm7, %ymm8, %ymm7 +; AVX2-NEXT: vpcmpeqd %ymm6, %ymm8, %ymm6 ; AVX2-NEXT: vpackssdw %ymm7, %ymm6, %ymm6 ; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm5, %ymm5 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm4, %ymm4 +; AVX2-NEXT: vpcmpeqd %ymm5, %ymm8, %ymm5 +; AVX2-NEXT: vpcmpeqd %ymm4, %ymm8, %ymm4 ; AVX2-NEXT: vpackssdw %ymm5, %ymm4, %ymm4 ; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] ; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 diff --git a/llvm/test/CodeGen/X86/masked_expandload.ll b/llvm/test/CodeGen/X86/masked_expandload.ll --- a/llvm/test/CodeGen/X86/masked_expandload.ll +++ b/llvm/test/CodeGen/X86/masked_expandload.ll @@ -2073,21 +2073,21 @@ ; AVX1-NEXT: vextractf128 $1, %ymm5, %xmm8 ; AVX1-NEXT: vpxor %xmm9, %xmm9, %xmm9 ; AVX1-NEXT: vpcmpeqd %xmm9, %xmm8, %xmm8 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 ; AVX1-NEXT: vpackssdw %xmm8, %xmm5, %xmm8 ; AVX1-NEXT: vextractf128 $1, %ymm4, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm4, %xmm4 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm4, %xmm9, %xmm4 ; AVX1-NEXT: vpackssdw %xmm5, %xmm4, %xmm4 ; AVX1-NEXT: vpacksswb %xmm8, %xmm4, %xmm4 ; AVX1-NEXT: vpmovmskb %xmm4, %ecx ; AVX1-NEXT: vextractf128 $1, %ymm7, %xmm4 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm4, %xmm4 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm7, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm4, %xmm9, %xmm4 +; AVX1-NEXT: vpcmpeqd %xmm7, %xmm9, %xmm5 ; AVX1-NEXT: vpackssdw %xmm4, %xmm5, %xmm4 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm5, %xmm5 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm6, %xmm6 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm9, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm6, %xmm9, %xmm6 ; AVX1-NEXT: vpackssdw %xmm5, %xmm6, %xmm5 ; AVX1-NEXT: vpacksswb %xmm4, %xmm5, %xmm4 ; AVX1-NEXT: vpmovmskb %xmm4, %eax @@ -2404,12 +2404,12 @@ ; AVX2-LABEL: expandload_v32f32_v32i32: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm7, %ymm7 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm6, %ymm6 +; AVX2-NEXT: vpcmpeqd %ymm7, %ymm8, %ymm7 +; AVX2-NEXT: vpcmpeqd %ymm6, %ymm8, %ymm6 ; AVX2-NEXT: vpackssdw %ymm7, %ymm6, %ymm6 ; AVX2-NEXT: vpermq {{.*#+}} ymm6 = ymm6[0,2,1,3] -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm5, %ymm5 -; AVX2-NEXT: vpcmpeqd %ymm8, %ymm4, %ymm4 +; AVX2-NEXT: vpcmpeqd %ymm5, %ymm8, %ymm5 +; AVX2-NEXT: vpcmpeqd %ymm4, %ymm8, %ymm4 ; AVX2-NEXT: vpackssdw %ymm5, %ymm4, %ymm4 ; AVX2-NEXT: vpermq {{.*#+}} ymm4 = ymm4[0,2,1,3] ; AVX2-NEXT: vpacksswb %ymm6, %ymm4, %ymm4 diff --git a/llvm/test/CodeGen/X86/midpoint-int-vec-256.ll b/llvm/test/CodeGen/X86/midpoint-int-vec-256.ll --- a/llvm/test/CodeGen/X86/midpoint-int-vec-256.ll +++ b/llvm/test/CodeGen/X86/midpoint-int-vec-256.ll @@ -490,7 +490,7 @@ ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -498,7 +498,7 @@ ; AVX1-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; AVX1-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -551,7 +551,7 @@ ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -559,7 +559,7 @@ ; XOP-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOP-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -591,7 +591,7 @@ ; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOPAVX1-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOPAVX1-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -599,7 +599,7 @@ ; XOPAVX1-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOPAVX1-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOPAVX1-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -778,7 +778,7 @@ ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -786,7 +786,7 @@ ; XOP-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOP-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -818,7 +818,7 @@ ; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOPAVX1-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOPAVX1-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -826,7 +826,7 @@ ; XOPAVX1-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOPAVX1-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOPAVX1-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -939,7 +939,7 @@ ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm0, %xmm0 ; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm0, %xmm7 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm0, %xmm6 @@ -947,7 +947,7 @@ ; AVX1-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm0, %xmm0 -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; AVX1-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1002,7 +1002,7 @@ ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm0, %xmm0 ; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm0, %xmm7 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm0, %xmm6 @@ -1010,7 +1010,7 @@ ; XOP-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOP-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm0, %xmm0 -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1043,7 +1043,7 @@ ; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOPAVX1-NEXT: vpsrlq $1, %xmm0, %xmm0 ; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOPAVX1-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm0, %xmm7 ; XOPAVX1-NEXT: vpsrlq $32, %xmm0, %xmm6 @@ -1051,7 +1051,7 @@ ; XOPAVX1-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOPAVX1-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm0, %xmm0 -; XOPAVX1-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1164,7 +1164,7 @@ ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1172,7 +1172,7 @@ ; AVX1-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; AVX1-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1227,7 +1227,7 @@ ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1235,7 +1235,7 @@ ; XOP-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOP-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1268,7 +1268,7 @@ ; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOPAVX1-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOPAVX1-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1276,7 +1276,7 @@ ; XOPAVX1-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOPAVX1-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOPAVX1-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1390,7 +1390,7 @@ ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; AVX1-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; AVX1-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; AVX1-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1398,7 +1398,7 @@ ; AVX1-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; AVX1-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; AVX1-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; AVX1-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; AVX1-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; AVX1-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1455,7 +1455,7 @@ ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOP-FALLBACK-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOP-FALLBACK-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOP-FALLBACK-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOP-FALLBACK-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1463,7 +1463,7 @@ ; XOP-FALLBACK-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOP-FALLBACK-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOP-FALLBACK-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOP-FALLBACK-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOP-FALLBACK-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOP-FALLBACK-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1497,7 +1497,7 @@ ; XOPAVX1-NEXT: vpsrlq $1, %xmm2, %xmm2 ; XOPAVX1-NEXT: vpsrlq $1, %xmm1, %xmm1 ; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1] -; XOPAVX1-NEXT: vpor %xmm8, %xmm5, %xmm5 +; XOPAVX1-NEXT: vpor %xmm5, %xmm8, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm5, %xmm7 ; XOPAVX1-NEXT: vpmuludq %xmm7, %xmm1, %xmm7 ; XOPAVX1-NEXT: vpsrlq $32, %xmm1, %xmm6 @@ -1505,7 +1505,7 @@ ; XOPAVX1-NEXT: vpaddq %xmm6, %xmm7, %xmm6 ; XOPAVX1-NEXT: vpsllq $32, %xmm6, %xmm6 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm1, %xmm1 -; XOPAVX1-NEXT: vpor %xmm8, %xmm4, %xmm4 +; XOPAVX1-NEXT: vpor %xmm4, %xmm8, %xmm4 ; XOPAVX1-NEXT: vpsrlq $32, %xmm4, %xmm5 ; XOPAVX1-NEXT: vpmuludq %xmm5, %xmm2, %xmm5 ; XOPAVX1-NEXT: vpsrlq $32, %xmm2, %xmm7 @@ -1760,10 +1760,10 @@ ; AVX1-FALLBACK-NEXT: vpminuw %xmm2, %xmm3, %xmm4 ; AVX1-FALLBACK-NEXT: vpcmpeqw %xmm4, %xmm3, %xmm5 ; AVX1-FALLBACK-NEXT: vpcmpeqd %xmm8, %xmm8, %xmm8 -; AVX1-FALLBACK-NEXT: vpxor %xmm8, %xmm5, %xmm5 +; AVX1-FALLBACK-NEXT: vpxor %xmm5, %xmm8, %xmm5 ; AVX1-FALLBACK-NEXT: vpminuw %xmm1, %xmm0, %xmm7 ; AVX1-FALLBACK-NEXT: vpcmpeqw %xmm7, %xmm0, %xmm6 -; AVX1-FALLBACK-NEXT: vpxor %xmm8, %xmm6, %xmm6 +; AVX1-FALLBACK-NEXT: vpxor %xmm6, %xmm8, %xmm6 ; AVX1-FALLBACK-NEXT: vpmaxuw %xmm2, %xmm3, %xmm2 ; AVX1-FALLBACK-NEXT: vpmaxuw %xmm1, %xmm0, %xmm1 ; AVX1-FALLBACK-NEXT: vpsubw %xmm7, %xmm1, %xmm1 diff --git a/llvm/test/CodeGen/X86/pr29112.ll b/llvm/test/CodeGen/X86/pr29112.ll --- a/llvm/test/CodeGen/X86/pr29112.ll +++ b/llvm/test/CodeGen/X86/pr29112.ll @@ -44,13 +44,13 @@ ; CHECK-NEXT: vaddps %xmm1, %xmm0, %xmm8 ; CHECK-NEXT: vinsertps {{.*#+}} xmm2 = xmm11[0,1],xmm2[3],xmm11[3] ; CHECK-NEXT: vinsertps {{.*#+}} xmm2 = xmm2[0,1,2],xmm3[2] -; CHECK-NEXT: vaddps %xmm14, %xmm2, %xmm2 +; CHECK-NEXT: vaddps %xmm2, %xmm14, %xmm2 ; CHECK-NEXT: vmovaps %xmm13, %xmm1 ; CHECK-NEXT: vmovaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill ; CHECK-NEXT: vaddps %xmm10, %xmm13, %xmm10 ; CHECK-NEXT: vaddps %xmm13, %xmm13, %xmm3 ; CHECK-NEXT: vaddps %xmm12, %xmm14, %xmm0 -; CHECK-NEXT: vaddps %xmm8, %xmm0, %xmm0 +; CHECK-NEXT: vaddps %xmm0, %xmm8, %xmm0 ; CHECK-NEXT: vaddps %xmm0, %xmm13, %xmm0 ; CHECK-NEXT: vmovaps %xmm3, {{[0-9]+}}(%rsp) ; CHECK-NEXT: vmovaps %xmm10, (%rsp) diff --git a/llvm/test/CodeGen/X86/sad.ll b/llvm/test/CodeGen/X86/sad.ll --- a/llvm/test/CodeGen/X86/sad.ll +++ b/llvm/test/CodeGen/X86/sad.ll @@ -786,49 +786,49 @@ ; AVX1-NEXT: vextractf128 $1, %ymm11, %xmm7 ; AVX1-NEXT: vpaddd %xmm7, %xmm2, %xmm2 ; AVX1-NEXT: vpabsd %xmm1, %xmm1 -; AVX1-NEXT: vpaddd %xmm11, %xmm1, %xmm1 +; AVX1-NEXT: vpaddd %xmm1, %xmm11, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm7 ; AVX1-NEXT: vpabsd %xmm6, %xmm1 ; AVX1-NEXT: vextractf128 $1, %ymm15, %xmm2 ; AVX1-NEXT: vpaddd %xmm2, %xmm1, %xmm1 ; AVX1-NEXT: vpabsd %xmm5, %xmm2 -; AVX1-NEXT: vpaddd %xmm15, %xmm2, %xmm2 +; AVX1-NEXT: vpaddd %xmm2, %xmm15, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm15 ; AVX1-NEXT: vpabsd %xmm0, %xmm1 ; AVX1-NEXT: vextractf128 $1, %ymm14, %xmm2 ; AVX1-NEXT: vpaddd %xmm2, %xmm1, %xmm1 ; AVX1-NEXT: vpabsd %xmm3, %xmm2 -; AVX1-NEXT: vpaddd %xmm14, %xmm2, %xmm2 +; AVX1-NEXT: vpaddd %xmm2, %xmm14, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm14 ; AVX1-NEXT: vpabsd %xmm4, %xmm1 ; AVX1-NEXT: vextractf128 $1, %ymm13, %xmm2 ; AVX1-NEXT: vpaddd %xmm2, %xmm1, %xmm1 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload -; AVX1-NEXT: vpaddd %xmm13, %xmm0, %xmm0 +; AVX1-NEXT: vpaddd %xmm0, %xmm13, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm13 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload ; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm1 ; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload -; AVX1-NEXT: vpaddd %xmm8, %xmm1, %xmm1 +; AVX1-NEXT: vpaddd %xmm1, %xmm8, %xmm1 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm8 ; AVX1-NEXT: vextractf128 $1, %ymm9, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm2, %xmm0 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload -; AVX1-NEXT: vpaddd %xmm9, %xmm1, %xmm1 +; AVX1-NEXT: vpaddd %xmm1, %xmm9, %xmm1 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm9 ; AVX1-NEXT: vextractf128 $1, %ymm10, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm2, %xmm0 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload -; AVX1-NEXT: vpaddd %xmm10, %xmm1, %xmm1 +; AVX1-NEXT: vpaddd %xmm1, %xmm10, %xmm1 ; AVX1-NEXT: vpabsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 16-byte Folded Reload ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm10 ; AVX1-NEXT: vextractf128 $1, %ymm12, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm2, %xmm0 ; AVX1-NEXT: vpabsd (%rsp), %xmm1 # 16-byte Folded Reload -; AVX1-NEXT: vpaddd %xmm12, %xmm1, %xmm1 +; AVX1-NEXT: vpaddd %xmm1, %xmm12, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm12 ; AVX1-NEXT: addq $4, %rax ; AVX1-NEXT: jne .LBB2_1 @@ -849,7 +849,7 @@ ; AVX1-NEXT: vpaddd %xmm0, %xmm2, %xmm0 ; AVX1-NEXT: vpaddd %xmm0, %xmm1, %xmm0 ; AVX1-NEXT: vpaddd %xmm12, %xmm13, %xmm1 -; AVX1-NEXT: vpaddd %xmm10, %xmm7, %xmm2 +; AVX1-NEXT: vpaddd %xmm7, %xmm10, %xmm2 ; AVX1-NEXT: vpaddd %xmm2, %xmm8, %xmm2 ; AVX1-NEXT: vpaddd %xmm1, %xmm9, %xmm1 ; AVX1-NEXT: vpaddd %xmm1, %xmm15, %xmm1 diff --git a/llvm/test/CodeGen/X86/uadd_sat_vec.ll b/llvm/test/CodeGen/X86/uadd_sat_vec.ll --- a/llvm/test/CodeGen/X86/uadd_sat_vec.ll +++ b/llvm/test/CodeGen/X86/uadd_sat_vec.ll @@ -1252,7 +1252,7 @@ ; AVX1-NEXT: vpxor %xmm4, %xmm5, %xmm9 ; AVX1-NEXT: vxorps %xmm7, %xmm7, %xmm7 ; AVX1-NEXT: vcmptrueps %ymm7, %ymm7, %ymm10 -; AVX1-NEXT: vxorps %ymm10, %ymm2, %ymm8 +; AVX1-NEXT: vxorps %ymm2, %ymm10, %ymm8 ; AVX1-NEXT: vextractf128 $1, %ymm8, %xmm6 ; AVX1-NEXT: vpxor %xmm4, %xmm6, %xmm7 ; AVX1-NEXT: vpcmpgtq %xmm9, %xmm7, %xmm7 @@ -1267,7 +1267,7 @@ ; AVX1-NEXT: vinsertf128 $1, %xmm5, %ymm0, %ymm0 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 ; AVX1-NEXT: vpxor %xmm4, %xmm2, %xmm8 -; AVX1-NEXT: vxorps %ymm10, %ymm3, %ymm6 +; AVX1-NEXT: vxorps %ymm3, %ymm10, %ymm6 ; AVX1-NEXT: vextractf128 $1, %ymm6, %xmm7 ; AVX1-NEXT: vpxor %xmm4, %xmm7, %xmm5 ; AVX1-NEXT: vpcmpgtq %xmm8, %xmm5, %xmm5 diff --git a/llvm/test/CodeGen/X86/vec_umulo.ll b/llvm/test/CodeGen/X86/vec_umulo.ll --- a/llvm/test/CodeGen/X86/vec_umulo.ll +++ b/llvm/test/CodeGen/X86/vec_umulo.ll @@ -559,7 +559,7 @@ ; AVX1-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,3],xmm5[4,5],xmm2[6,7] ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm2, %xmm2 +; AVX1-NEXT: vpcmpeqd %xmm2, %xmm8, %xmm2 ; AVX1-NEXT: vpcmpeqd %xmm6, %xmm6, %xmm6 ; AVX1-NEXT: vpxor %xmm6, %xmm2, %xmm2 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm1[1,1,3,3] @@ -568,7 +568,7 @@ ; AVX1-NEXT: vpmuludq %xmm1, %xmm0, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3],xmm7[4,5],xmm5[6,7] -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm8, %xmm5 ; AVX1-NEXT: vpxor %xmm6, %xmm5, %xmm5 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm2 ; AVX1-NEXT: vpmulld %xmm1, %xmm0, %xmm0 @@ -731,7 +731,7 @@ ; AVX1-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm5[0,1],xmm2[2,3],xmm5[4,5],xmm2[6,7] ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm2, %xmm2 +; AVX1-NEXT: vpcmpeqd %xmm2, %xmm8, %xmm2 ; AVX1-NEXT: vpcmpeqd %xmm6, %xmm6, %xmm6 ; AVX1-NEXT: vpxor %xmm6, %xmm2, %xmm2 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm1[1,1,3,3] @@ -740,7 +740,7 @@ ; AVX1-NEXT: vpmuludq %xmm1, %xmm0, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3],xmm7[4,5],xmm5[6,7] -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm8, %xmm5 ; AVX1-NEXT: vpxor %xmm6, %xmm5, %xmm5 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm5, %ymm2 ; AVX1-NEXT: vpmulld %xmm1, %xmm0, %xmm0 @@ -979,17 +979,17 @@ ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm7 = xmm7[0,1],xmm6[2,3],xmm7[4,5],xmm6[6,7] ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm7, %xmm7 +; AVX1-NEXT: vpcmpeqd %xmm7, %xmm8, %xmm7 ; AVX1-NEXT: vpcmpeqd %xmm9, %xmm9, %xmm9 -; AVX1-NEXT: vpxor %xmm9, %xmm7, %xmm7 +; AVX1-NEXT: vpxor %xmm7, %xmm9, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm6 = xmm3[1,1,3,3] ; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm1[1,1,3,3] ; AVX1-NEXT: vpmuludq %xmm6, %xmm4, %xmm4 ; AVX1-NEXT: vpmuludq %xmm3, %xmm1, %xmm6 ; AVX1-NEXT: vpshufd {{.*#+}} xmm6 = xmm6[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm4 = xmm6[0,1],xmm4[2,3],xmm6[4,5],xmm4[6,7] -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm4, %xmm4 -; AVX1-NEXT: vpxor %xmm9, %xmm4, %xmm4 +; AVX1-NEXT: vpcmpeqd %xmm4, %xmm8, %xmm4 +; AVX1-NEXT: vpxor %xmm4, %xmm9, %xmm4 ; AVX1-NEXT: vpackssdw %xmm7, %xmm4, %xmm11 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm6[1,1,3,3] @@ -999,16 +999,16 @@ ; AVX1-NEXT: vpmuludq %xmm6, %xmm4, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3],xmm7[4,5],xmm5[6,7] -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm5, %xmm5 -; AVX1-NEXT: vpxor %xmm9, %xmm5, %xmm13 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm8, %xmm5 +; AVX1-NEXT: vpxor %xmm5, %xmm9, %xmm13 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[1,1,3,3] ; AVX1-NEXT: vpshufd {{.*#+}} xmm5 = xmm0[1,1,3,3] ; AVX1-NEXT: vpmuludq %xmm7, %xmm5, %xmm5 ; AVX1-NEXT: vpmuludq %xmm2, %xmm0, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm7 = xmm7[1,1,3,3] ; AVX1-NEXT: vpblendw {{.*#+}} xmm5 = xmm7[0,1],xmm5[2,3],xmm7[4,5],xmm5[6,7] -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm5, %xmm5 -; AVX1-NEXT: vpxor %xmm9, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqd %xmm5, %xmm8, %xmm5 +; AVX1-NEXT: vpxor %xmm5, %xmm9, %xmm5 ; AVX1-NEXT: vpackssdw %xmm13, %xmm5, %xmm5 ; AVX1-NEXT: vpacksswb %xmm11, %xmm5, %xmm5 ; AVX1-NEXT: vpmulld %xmm2, %xmm0, %xmm2 diff --git a/llvm/test/CodeGen/X86/vector-fshl-256.ll b/llvm/test/CodeGen/X86/vector-fshl-256.ll --- a/llvm/test/CodeGen/X86/vector-fshl-256.ll +++ b/llvm/test/CodeGen/X86/vector-fshl-256.ll @@ -230,8 +230,8 @@ ; AVX1-NEXT: vpmulld %xmm5, %xmm0, %xmm5 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm5, %ymm4 ; AVX1-NEXT: vorps %ymm1, %ymm4, %ymm1 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm3, %xmm3 -; AVX1-NEXT: vpcmpeqd %xmm9, %xmm2, %xmm2 +; AVX1-NEXT: vpcmpeqd %xmm3, %xmm9, %xmm3 +; AVX1-NEXT: vpcmpeqd %xmm2, %xmm9, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2 ; AVX1-NEXT: vblendvps %ymm2, %ymm0, %ymm1, %ymm0 ; AVX1-NEXT: retq @@ -606,7 +606,7 @@ ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4 ; AVX1-NEXT: vpsrlw $4, %xmm4, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15] -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm6 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm6 ; AVX1-NEXT: vandps {{.*}}(%rip), %ymm2, %ymm2 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8] @@ -615,7 +615,7 @@ ; AVX1-NEXT: vpblendvb %xmm5, %xmm6, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $2, %xmm4, %xmm6 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm10 = [63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63] -; AVX1-NEXT: vpand %xmm10, %xmm6, %xmm6 +; AVX1-NEXT: vpand %xmm6, %xmm10, %xmm6 ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 ; AVX1-NEXT: vpblendvb %xmm5, %xmm6, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $1, %xmm4, %xmm6 @@ -624,12 +624,12 @@ ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 ; AVX1-NEXT: vpblendvb %xmm5, %xmm6, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $4, %xmm1, %xmm5 -; AVX1-NEXT: vpand %xmm8, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm8, %xmm5 ; AVX1-NEXT: vpsubb %xmm2, %xmm9, %xmm6 ; AVX1-NEXT: vpsllw $5, %xmm6, %xmm6 ; AVX1-NEXT: vpblendvb %xmm6, %xmm5, %xmm1, %xmm1 ; AVX1-NEXT: vpsrlw $2, %xmm1, %xmm5 -; AVX1-NEXT: vpand %xmm10, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm10, %xmm5 ; AVX1-NEXT: vpaddb %xmm6, %xmm6, %xmm6 ; AVX1-NEXT: vpblendvb %xmm6, %xmm5, %xmm1, %xmm1 ; AVX1-NEXT: vpsrlw $1, %xmm1, %xmm5 @@ -663,7 +663,7 @@ ; AVX1-NEXT: vpaddb %xmm6, %xmm6, %xmm6 ; AVX1-NEXT: vpblendvb %xmm6, %xmm5, %xmm1, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm1, %ymm1 -; AVX1-NEXT: vorps %ymm8, %ymm1, %ymm1 +; AVX1-NEXT: vorps %ymm1, %ymm8, %ymm1 ; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4 ; AVX1-NEXT: vpcmpeqb %xmm4, %xmm3, %xmm3 ; AVX1-NEXT: vpcmpeqb %xmm4, %xmm2, %xmm2 @@ -1477,8 +1477,8 @@ ; AVX1-NEXT: vpand %xmm6, %xmm1, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm1, %ymm1 ; AVX1-NEXT: vorps %ymm1, %ymm4, %ymm1 -; AVX1-NEXT: vpcmpeqb %xmm8, %xmm5, %xmm3 -; AVX1-NEXT: vpcmpeqb %xmm8, %xmm2, %xmm2 +; AVX1-NEXT: vpcmpeqb %xmm5, %xmm8, %xmm3 +; AVX1-NEXT: vpcmpeqb %xmm2, %xmm8, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2 ; AVX1-NEXT: vandnps %ymm1, %ymm2, %ymm1 ; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0 diff --git a/llvm/test/CodeGen/X86/vector-fshl-512.ll b/llvm/test/CodeGen/X86/vector-fshl-512.ll --- a/llvm/test/CodeGen/X86/vector-fshl-512.ll +++ b/llvm/test/CodeGen/X86/vector-fshl-512.ll @@ -317,15 +317,15 @@ ; AVX512F-NEXT: vpsllw $5, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm1, %ymm1 ; AVX512F-NEXT: vpsrlw $2, %ymm1, %ymm5 -; AVX512F-NEXT: vpand %ymm14, %ymm5, %ymm5 +; AVX512F-NEXT: vpand %ymm5, %ymm14, %ymm5 ; AVX512F-NEXT: vpaddb %ymm6, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm1, %ymm1 ; AVX512F-NEXT: vpsrlw $1, %ymm1, %ymm5 -; AVX512F-NEXT: vpand %ymm15, %ymm5, %ymm5 +; AVX512F-NEXT: vpand %ymm5, %ymm15, %ymm5 ; AVX512F-NEXT: vpaddb %ymm6, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm1, %ymm1 ; AVX512F-NEXT: vpor %ymm1, %ymm4, %ymm1 -; AVX512F-NEXT: vpcmpeqb %ymm10, %ymm2, %ymm2 +; AVX512F-NEXT: vpcmpeqb %ymm2, %ymm10, %ymm2 ; AVX512F-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0 ; AVX512F-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm0 ; AVX512F-NEXT: retq @@ -339,7 +339,7 @@ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm7 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240] ; AVX512VL-NEXT: vpand %ymm7, %ymm6, %ymm6 ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7] -; AVX512VL-NEXT: vpand %ymm8, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm8, %ymm5 ; AVX512VL-NEXT: vpsllw $5, %ymm5, %ymm9 ; AVX512VL-NEXT: vpblendvb %ymm9, %ymm6, %ymm3, %ymm6 ; AVX512VL-NEXT: vpsllw $2, %ymm6, %ymm10 @@ -373,27 +373,27 @@ ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm3 ; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm4 ; AVX512VL-NEXT: vpand %ymm7, %ymm4, %ymm4 -; AVX512VL-NEXT: vpand %ymm8, %ymm2, %ymm2 +; AVX512VL-NEXT: vpand %ymm2, %ymm8, %ymm2 ; AVX512VL-NEXT: vpsllw $5, %ymm2, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm4, %ymm0, %ymm4 ; AVX512VL-NEXT: vpsllw $2, %ymm4, %ymm7 -; AVX512VL-NEXT: vpand %ymm11, %ymm7, %ymm7 +; AVX512VL-NEXT: vpand %ymm7, %ymm11, %ymm7 ; AVX512VL-NEXT: vpaddb %ymm5, %ymm5, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm7, %ymm4, %ymm4 ; AVX512VL-NEXT: vpaddb %ymm4, %ymm4, %ymm7 ; AVX512VL-NEXT: vpaddb %ymm5, %ymm5, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm7, %ymm4, %ymm4 ; AVX512VL-NEXT: vpsrlw $4, %ymm1, %ymm5 -; AVX512VL-NEXT: vpand %ymm10, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm10, %ymm5 ; AVX512VL-NEXT: vpsubb %ymm2, %ymm12, %ymm7 ; AVX512VL-NEXT: vpsllw $5, %ymm7, %ymm7 ; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpsrlw $2, %ymm1, %ymm5 -; AVX512VL-NEXT: vpand %ymm14, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm14, %ymm5 ; AVX512VL-NEXT: vpaddb %ymm7, %ymm7, %ymm7 ; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpsrlw $1, %ymm1, %ymm5 -; AVX512VL-NEXT: vpand %ymm15, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm15, %ymm5 ; AVX512VL-NEXT: vpaddb %ymm7, %ymm7, %ymm7 ; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpor %ymm1, %ymm4, %ymm1 @@ -837,7 +837,7 @@ ; AVX512F-NEXT: vpand %ymm6, %ymm9, %ymm8 ; AVX512F-NEXT: vpor %ymm8, %ymm10, %ymm8 ; AVX512F-NEXT: vpxor %xmm9, %xmm9, %xmm9 -; AVX512F-NEXT: vpcmpeqb %ymm9, %ymm2, %ymm2 +; AVX512F-NEXT: vpcmpeqb %ymm2, %ymm9, %ymm2 ; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm8, %ymm4 ; AVX512F-NEXT: vpsllw %xmm5, %ymm0, %ymm5 ; AVX512F-NEXT: vpand %ymm7, %ymm5, %ymm5 @@ -870,7 +870,7 @@ ; AVX512VL-NEXT: vpand %ymm6, %ymm9, %ymm8 ; AVX512VL-NEXT: vpor %ymm8, %ymm10, %ymm8 ; AVX512VL-NEXT: vpxor %xmm9, %xmm9, %xmm9 -; AVX512VL-NEXT: vpcmpeqb %ymm9, %ymm2, %ymm2 +; AVX512VL-NEXT: vpcmpeqb %ymm2, %ymm9, %ymm2 ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm4, %ymm8, %ymm4 ; AVX512VL-NEXT: vpsllw %xmm5, %ymm0, %ymm5 ; AVX512VL-NEXT: vpand %ymm7, %ymm5, %ymm5 @@ -1154,7 +1154,7 @@ ; AVX512F-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm4 ; AVX512F-NEXT: vpsllw $2, %ymm4, %ymm7 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm8 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252] -; AVX512F-NEXT: vpand %ymm8, %ymm7, %ymm7 +; AVX512F-NEXT: vpand %ymm7, %ymm8, %ymm7 ; AVX512F-NEXT: vpaddb %ymm6, %ymm6, %ymm9 ; AVX512F-NEXT: vpblendvb %ymm9, %ymm7, %ymm4, %ymm4 ; AVX512F-NEXT: vpaddb %ymm4, %ymm4, %ymm7 @@ -1169,7 +1169,7 @@ ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0],ymm7[0],ymm2[1],ymm7[1],ymm2[2],ymm7[2],ymm2[3],ymm7[3],ymm2[4],ymm7[4],ymm2[5],ymm7[5],ymm2[6],ymm7[6],ymm2[7],ymm7[7],ymm2[16],ymm7[16],ymm2[17],ymm7[17],ymm2[18],ymm7[18],ymm2[19],ymm7[19],ymm2[20],ymm7[20],ymm2[21],ymm7[21],ymm2[22],ymm7[22],ymm2[23],ymm7[23] ; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm13 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512F-NEXT: # ymm13 = mem[0,1,0,1] -; AVX512F-NEXT: vpmullw %ymm13, %ymm2, %ymm2 +; AVX512F-NEXT: vpmullw %ymm2, %ymm13, %ymm2 ; AVX512F-NEXT: vpsrlw $8, %ymm2, %ymm2 ; AVX512F-NEXT: vpackuswb %ymm11, %ymm2, %ymm2 ; AVX512F-NEXT: vpor %ymm2, %ymm4, %ymm2 @@ -1179,15 +1179,15 @@ ; AVX512F-NEXT: vpand %ymm5, %ymm3, %ymm3 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm3, %ymm0, %ymm3 ; AVX512F-NEXT: vpsllw $2, %ymm3, %ymm5 -; AVX512F-NEXT: vpand %ymm8, %ymm5, %ymm5 +; AVX512F-NEXT: vpand %ymm5, %ymm8, %ymm5 ; AVX512F-NEXT: vpblendvb %ymm9, %ymm5, %ymm3, %ymm3 ; AVX512F-NEXT: vpaddb %ymm3, %ymm3, %ymm5 ; AVX512F-NEXT: vpblendvb %ymm10, %ymm5, %ymm3, %ymm3 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm1[8],ymm7[8],ymm1[9],ymm7[9],ymm1[10],ymm7[10],ymm1[11],ymm7[11],ymm1[12],ymm7[12],ymm1[13],ymm7[13],ymm1[14],ymm7[14],ymm1[15],ymm7[15],ymm1[24],ymm7[24],ymm1[25],ymm7[25],ymm1[26],ymm7[26],ymm1[27],ymm7[27],ymm1[28],ymm7[28],ymm1[29],ymm7[29],ymm1[30],ymm7[30],ymm1[31],ymm7[31] -; AVX512F-NEXT: vpmullw %ymm12, %ymm5, %ymm5 +; AVX512F-NEXT: vpmullw %ymm5, %ymm12, %ymm5 ; AVX512F-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0],ymm7[0],ymm1[1],ymm7[1],ymm1[2],ymm7[2],ymm1[3],ymm7[3],ymm1[4],ymm7[4],ymm1[5],ymm7[5],ymm1[6],ymm7[6],ymm1[7],ymm7[7],ymm1[16],ymm7[16],ymm1[17],ymm7[17],ymm1[18],ymm7[18],ymm1[19],ymm7[19],ymm1[20],ymm7[20],ymm1[21],ymm7[21],ymm1[22],ymm7[22],ymm1[23],ymm7[23] -; AVX512F-NEXT: vpmullw %ymm13, %ymm1, %ymm1 +; AVX512F-NEXT: vpmullw %ymm1, %ymm13, %ymm1 ; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512F-NEXT: vpackuswb %ymm5, %ymm1, %ymm1 ; AVX512F-NEXT: vpor %ymm1, %ymm3, %ymm1 @@ -1207,7 +1207,7 @@ ; AVX512VL-NEXT: vpblendvb %ymm6, %ymm4, %ymm3, %ymm4 ; AVX512VL-NEXT: vpsllw $2, %ymm4, %ymm7 ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252] -; AVX512VL-NEXT: vpand %ymm8, %ymm7, %ymm7 +; AVX512VL-NEXT: vpand %ymm7, %ymm8, %ymm7 ; AVX512VL-NEXT: vpaddb %ymm6, %ymm6, %ymm9 ; AVX512VL-NEXT: vpblendvb %ymm9, %ymm7, %ymm4, %ymm4 ; AVX512VL-NEXT: vpaddb %ymm4, %ymm4, %ymm7 @@ -1217,13 +1217,13 @@ ; AVX512VL-NEXT: vpsrlw $8, %ymm7, %ymm7 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2] ; AVX512VL-NEXT: # ymm11 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm11, %ymm7, %ymm7 +; AVX512VL-NEXT: vpmullw %ymm7, %ymm11, %ymm7 ; AVX512VL-NEXT: vpsrlw $8, %ymm7, %ymm7 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm2 = ymm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm2, %ymm2 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm12 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512VL-NEXT: # ymm12 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm12, %ymm2, %ymm2 +; AVX512VL-NEXT: vpmullw %ymm2, %ymm12, %ymm2 ; AVX512VL-NEXT: vpsrlw $8, %ymm2, %ymm2 ; AVX512VL-NEXT: vpackuswb %ymm7, %ymm2, %ymm2 ; AVX512VL-NEXT: vpor %ymm2, %ymm4, %ymm2 @@ -1233,17 +1233,17 @@ ; AVX512VL-NEXT: vpand %ymm5, %ymm3, %ymm3 ; AVX512VL-NEXT: vpblendvb %ymm6, %ymm3, %ymm0, %ymm3 ; AVX512VL-NEXT: vpsllw $2, %ymm3, %ymm5 -; AVX512VL-NEXT: vpand %ymm8, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm8, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm9, %ymm5, %ymm3, %ymm3 ; AVX512VL-NEXT: vpaddb %ymm3, %ymm3, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm10, %ymm5, %ymm3, %ymm3 ; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 -; AVX512VL-NEXT: vpmullw %ymm11, %ymm5, %ymm5 +; AVX512VL-NEXT: vpmullw %ymm5, %ymm11, %ymm5 ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 -; AVX512VL-NEXT: vpmullw %ymm12, %ymm1, %ymm1 +; AVX512VL-NEXT: vpmullw %ymm1, %ymm12, %ymm1 ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vpackuswb %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpor %ymm1, %ymm3, %ymm1 diff --git a/llvm/test/CodeGen/X86/vector-fshl-rot-256.ll b/llvm/test/CodeGen/X86/vector-fshl-rot-256.ll --- a/llvm/test/CodeGen/X86/vector-fshl-rot-256.ll +++ b/llvm/test/CodeGen/X86/vector-fshl-rot-256.ll @@ -358,7 +358,7 @@ ; AVX1-NEXT: vpblendvb %xmm5, %xmm3, %xmm2, %xmm2 ; AVX1-NEXT: vpsrlw $7, %xmm2, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3 ; AVX1-NEXT: vpaddb %xmm2, %xmm2, %xmm7 ; AVX1-NEXT: vpor %xmm3, %xmm7, %xmm3 ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 @@ -378,7 +378,7 @@ ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 ; AVX1-NEXT: vpblendvb %xmm1, %xmm3, %xmm0, %xmm0 ; AVX1-NEXT: vpsrlw $7, %xmm0, %xmm3 -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3 ; AVX1-NEXT: vpaddb %xmm0, %xmm0, %xmm4 ; AVX1-NEXT: vpor %xmm3, %xmm4, %xmm3 ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 @@ -1141,7 +1141,7 @@ ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15] ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [256,128,64,32,16,8,4,2] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero ; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [256,2,4,8,16,32,64,128] @@ -1159,7 +1159,7 @@ ; AVX1-NEXT: vpackuswb %xmm1, %xmm5, %xmm1 ; AVX1-NEXT: vpor %xmm3, %xmm1, %xmm1 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero ; AVX1-NEXT: vpmullw %xmm6, %xmm5, %xmm6 diff --git a/llvm/test/CodeGen/X86/vector-fshl-rot-512.ll b/llvm/test/CodeGen/X86/vector-fshl-rot-512.ll --- a/llvm/test/CodeGen/X86/vector-fshl-rot-512.ll +++ b/llvm/test/CodeGen/X86/vector-fshl-rot-512.ll @@ -138,7 +138,7 @@ ; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm3 ; AVX512F-NEXT: vpsrlw $7, %ymm3, %ymm4 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX512F-NEXT: vpand %ymm8, %ymm4, %ymm4 +; AVX512F-NEXT: vpand %ymm4, %ymm8, %ymm4 ; AVX512F-NEXT: vpaddb %ymm3, %ymm3, %ymm9 ; AVX512F-NEXT: vpor %ymm4, %ymm9, %ymm4 ; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm2 @@ -159,7 +159,7 @@ ; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpsrlw $7, %ymm0, %ymm3 -; AVX512F-NEXT: vpand %ymm8, %ymm3, %ymm3 +; AVX512F-NEXT: vpand %ymm3, %ymm8, %ymm3 ; AVX512F-NEXT: vpaddb %ymm0, %ymm0, %ymm4 ; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3 ; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1 @@ -598,7 +598,7 @@ ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0],ymm5[0],ymm1[1],ymm5[1],ymm1[2],ymm5[2],ymm1[3],ymm5[3],ymm1[4],ymm5[4],ymm1[5],ymm5[5],ymm1[6],ymm5[6],ymm1[7],ymm5[7],ymm1[16],ymm5[16],ymm1[17],ymm5[17],ymm1[18],ymm5[18],ymm1[19],ymm5[19],ymm1[20],ymm5[20],ymm1[21],ymm5[21],ymm1[22],ymm5[22],ymm1[23],ymm5[23] ; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512F-NEXT: # ymm11 = mem[0,1,0,1] -; AVX512F-NEXT: vpmullw %ymm11, %ymm1, %ymm1 +; AVX512F-NEXT: vpmullw %ymm1, %ymm11, %ymm1 ; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512F-NEXT: vpackuswb %ymm9, %ymm1, %ymm1 ; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -611,10 +611,10 @@ ; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm3 ; AVX512F-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm5[8],ymm0[9],ymm5[9],ymm0[10],ymm5[10],ymm0[11],ymm5[11],ymm0[12],ymm5[12],ymm0[13],ymm5[13],ymm0[14],ymm5[14],ymm0[15],ymm5[15],ymm0[24],ymm5[24],ymm0[25],ymm5[25],ymm0[26],ymm5[26],ymm0[27],ymm5[27],ymm0[28],ymm5[28],ymm0[29],ymm5[29],ymm0[30],ymm5[30],ymm0[31],ymm5[31] -; AVX512F-NEXT: vpmullw %ymm10, %ymm3, %ymm3 +; AVX512F-NEXT: vpmullw %ymm3, %ymm10, %ymm3 ; AVX512F-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[1],ymm5[1],ymm0[2],ymm5[2],ymm0[3],ymm5[3],ymm0[4],ymm5[4],ymm0[5],ymm5[5],ymm0[6],ymm5[6],ymm0[7],ymm5[7],ymm0[16],ymm5[16],ymm0[17],ymm5[17],ymm0[18],ymm5[18],ymm0[19],ymm5[19],ymm0[20],ymm5[20],ymm0[21],ymm5[21],ymm0[22],ymm5[22],ymm0[23],ymm5[23] -; AVX512F-NEXT: vpmullw %ymm11, %ymm0, %ymm0 +; AVX512F-NEXT: vpmullw %ymm0, %ymm11, %ymm0 ; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512F-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpor %ymm0, %ymm2, %ymm0 @@ -642,13 +642,13 @@ ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2] ; AVX512VL-NEXT: # ymm9 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm9, %ymm5, %ymm5 +; AVX512VL-NEXT: vpmullw %ymm5, %ymm9, %ymm5 ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512VL-NEXT: # ymm10 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm10, %ymm1, %ymm1 +; AVX512VL-NEXT: vpmullw %ymm1, %ymm10, %ymm1 ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vpackuswb %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -662,11 +662,11 @@ ; AVX512VL-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 -; AVX512VL-NEXT: vpmullw %ymm9, %ymm3, %ymm3 +; AVX512VL-NEXT: vpmullw %ymm3, %ymm9, %ymm3 ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 -; AVX512VL-NEXT: vpmullw %ymm10, %ymm0, %ymm0 +; AVX512VL-NEXT: vpmullw %ymm0, %ymm10, %ymm0 ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512VL-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512VL-NEXT: vpor %ymm0, %ymm2, %ymm0 diff --git a/llvm/test/CodeGen/X86/vector-fshr-256.ll b/llvm/test/CodeGen/X86/vector-fshr-256.ll --- a/llvm/test/CodeGen/X86/vector-fshr-256.ll +++ b/llvm/test/CodeGen/X86/vector-fshr-256.ll @@ -231,8 +231,8 @@ ; AVX1-NEXT: vpmulld %xmm6, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm5, %ymm0, %ymm0 ; AVX1-NEXT: vorps %ymm4, %ymm0, %ymm0 -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm3, %xmm3 -; AVX1-NEXT: vpcmpeqd %xmm8, %xmm2, %xmm2 +; AVX1-NEXT: vpcmpeqd %xmm3, %xmm8, %xmm3 +; AVX1-NEXT: vpcmpeqd %xmm2, %xmm8, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2 ; AVX1-NEXT: vblendvps %ymm2, %ymm1, %ymm0, %ymm0 ; AVX1-NEXT: retq @@ -429,7 +429,7 @@ ; AVX1-NEXT: vpackusdw %xmm7, %xmm4, %xmm4 ; AVX1-NEXT: vpmullw %xmm4, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm6, %ymm0, %ymm0 -; AVX1-NEXT: vorps %ymm8, %ymm0, %ymm0 +; AVX1-NEXT: vorps %ymm0, %ymm8, %ymm0 ; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4 ; AVX1-NEXT: vpcmpeqw %xmm4, %xmm3, %xmm3 ; AVX1-NEXT: vpcmpeqw %xmm4, %xmm2, %xmm2 @@ -610,7 +610,7 @@ ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 ; AVX1-NEXT: vpsllw $4, %xmm4, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240] -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm6 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm6 ; AVX1-NEXT: vandps {{.*}}(%rip), %ymm2, %ymm2 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8] @@ -626,7 +626,7 @@ ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 ; AVX1-NEXT: vpblendvb %xmm5, %xmm6, %xmm4, %xmm4 ; AVX1-NEXT: vpsllw $4, %xmm0, %xmm5 -; AVX1-NEXT: vpand %xmm8, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm8, %xmm5 ; AVX1-NEXT: vpsubb %xmm2, %xmm9, %xmm6 ; AVX1-NEXT: vpsllw $5, %xmm6, %xmm6 ; AVX1-NEXT: vpblendvb %xmm6, %xmm5, %xmm0, %xmm0 @@ -641,12 +641,12 @@ ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4 ; AVX1-NEXT: vpsrlw $4, %xmm4, %xmm5 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15] -; AVX1-NEXT: vpand %xmm9, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm9, %xmm5 ; AVX1-NEXT: vpsllw $5, %xmm3, %xmm7 ; AVX1-NEXT: vpblendvb %xmm7, %xmm5, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $2, %xmm4, %xmm5 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm10 = [63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63] -; AVX1-NEXT: vpand %xmm10, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm10, %xmm5 ; AVX1-NEXT: vpaddb %xmm7, %xmm7, %xmm7 ; AVX1-NEXT: vpblendvb %xmm7, %xmm5, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $1, %xmm4, %xmm5 @@ -655,11 +655,11 @@ ; AVX1-NEXT: vpaddb %xmm7, %xmm7, %xmm7 ; AVX1-NEXT: vpblendvb %xmm7, %xmm5, %xmm4, %xmm4 ; AVX1-NEXT: vpsrlw $4, %xmm1, %xmm5 -; AVX1-NEXT: vpand %xmm9, %xmm5, %xmm5 +; AVX1-NEXT: vpand %xmm5, %xmm9, %xmm5 ; AVX1-NEXT: vpsllw $5, %xmm2, %xmm7 ; AVX1-NEXT: vpblendvb %xmm7, %xmm5, %xmm1, %xmm5 ; AVX1-NEXT: vpsrlw $2, %xmm5, %xmm0 -; AVX1-NEXT: vpand %xmm10, %xmm0, %xmm0 +; AVX1-NEXT: vpand %xmm0, %xmm10, %xmm0 ; AVX1-NEXT: vpaddb %xmm7, %xmm7, %xmm7 ; AVX1-NEXT: vpblendvb %xmm7, %xmm0, %xmm5, %xmm0 ; AVX1-NEXT: vpsrlw $1, %xmm0, %xmm5 @@ -1477,7 +1477,7 @@ ; AVX1-NEXT: vpshufb %xmm3, %xmm6, %xmm6 ; AVX1-NEXT: vpand %xmm6, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 -; AVX1-NEXT: vorps %ymm9, %ymm0, %ymm0 +; AVX1-NEXT: vorps %ymm0, %ymm9, %ymm0 ; AVX1-NEXT: vpcmpeqb %xmm3, %xmm5, %xmm4 ; AVX1-NEXT: vpcmpeqb %xmm3, %xmm2, %xmm2 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm2, %ymm2 diff --git a/llvm/test/CodeGen/X86/vector-fshr-512.ll b/llvm/test/CodeGen/X86/vector-fshr-512.ll --- a/llvm/test/CodeGen/X86/vector-fshr-512.ll +++ b/llvm/test/CodeGen/X86/vector-fshr-512.ll @@ -309,19 +309,19 @@ ; AVX512F-NEXT: vpaddb %ymm5, %ymm5, %ymm5 ; AVX512F-NEXT: vpblendvb %ymm5, %ymm6, %ymm4, %ymm4 ; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm5 -; AVX512F-NEXT: vpand %ymm12, %ymm5, %ymm5 +; AVX512F-NEXT: vpand %ymm5, %ymm12, %ymm5 ; AVX512F-NEXT: vpsubb %ymm2, %ymm13, %ymm6 ; AVX512F-NEXT: vpsllw $5, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm0, %ymm0 ; AVX512F-NEXT: vpsllw $2, %ymm0, %ymm5 -; AVX512F-NEXT: vpand %ymm15, %ymm5, %ymm5 +; AVX512F-NEXT: vpand %ymm5, %ymm15, %ymm5 ; AVX512F-NEXT: vpaddb %ymm6, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm0, %ymm0 ; AVX512F-NEXT: vpaddb %ymm0, %ymm0, %ymm5 ; AVX512F-NEXT: vpaddb %ymm6, %ymm6, %ymm6 ; AVX512F-NEXT: vpblendvb %ymm6, %ymm5, %ymm0, %ymm0 ; AVX512F-NEXT: vpor %ymm4, %ymm0, %ymm0 -; AVX512F-NEXT: vpcmpeqb %ymm10, %ymm2, %ymm2 +; AVX512F-NEXT: vpcmpeqb %ymm2, %ymm10, %ymm2 ; AVX512F-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 ; AVX512F-NEXT: vinserti64x4 $1, %ymm3, %zmm0, %zmm0 ; AVX512F-NEXT: retq @@ -335,7 +335,7 @@ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm7 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15] ; AVX512VL-NEXT: vpand %ymm7, %ymm6, %ymm6 ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7] -; AVX512VL-NEXT: vpand %ymm8, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm8, %ymm5 ; AVX512VL-NEXT: vpsllw $5, %ymm5, %ymm9 ; AVX512VL-NEXT: vpblendvb %ymm9, %ymm6, %ymm3, %ymm6 ; AVX512VL-NEXT: vpsrlw $2, %ymm6, %ymm10 @@ -369,24 +369,24 @@ ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm3, %ymm4, %ymm3 ; AVX512VL-NEXT: vpsrlw $4, %ymm1, %ymm4 ; AVX512VL-NEXT: vpand %ymm7, %ymm4, %ymm4 -; AVX512VL-NEXT: vpand %ymm8, %ymm2, %ymm2 +; AVX512VL-NEXT: vpand %ymm2, %ymm8, %ymm2 ; AVX512VL-NEXT: vpsllw $5, %ymm2, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm4, %ymm1, %ymm4 ; AVX512VL-NEXT: vpsrlw $2, %ymm4, %ymm7 -; AVX512VL-NEXT: vpand %ymm11, %ymm7, %ymm7 +; AVX512VL-NEXT: vpand %ymm7, %ymm11, %ymm7 ; AVX512VL-NEXT: vpaddb %ymm5, %ymm5, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm7, %ymm4, %ymm4 ; AVX512VL-NEXT: vpsrlw $1, %ymm4, %ymm7 -; AVX512VL-NEXT: vpand %ymm12, %ymm7, %ymm7 +; AVX512VL-NEXT: vpand %ymm7, %ymm12, %ymm7 ; AVX512VL-NEXT: vpaddb %ymm5, %ymm5, %ymm5 ; AVX512VL-NEXT: vpblendvb %ymm5, %ymm7, %ymm4, %ymm4 ; AVX512VL-NEXT: vpsllw $4, %ymm0, %ymm5 -; AVX512VL-NEXT: vpand %ymm10, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm10, %ymm5 ; AVX512VL-NEXT: vpsubb %ymm2, %ymm13, %ymm7 ; AVX512VL-NEXT: vpsllw $5, %ymm7, %ymm7 ; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm0, %ymm0 ; AVX512VL-NEXT: vpsllw $2, %ymm0, %ymm5 -; AVX512VL-NEXT: vpand %ymm15, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm15, %ymm5 ; AVX512VL-NEXT: vpaddb %ymm7, %ymm7, %ymm7 ; AVX512VL-NEXT: vpblendvb %ymm7, %ymm5, %ymm0, %ymm0 ; AVX512VL-NEXT: vpaddb %ymm0, %ymm0, %ymm5 @@ -825,7 +825,7 @@ ; AVX512F-NEXT: vpand %ymm6, %ymm9, %ymm8 ; AVX512F-NEXT: vpor %ymm10, %ymm8, %ymm8 ; AVX512F-NEXT: vpxor %xmm9, %xmm9, %xmm9 -; AVX512F-NEXT: vpcmpeqb %ymm9, %ymm2, %ymm2 +; AVX512F-NEXT: vpcmpeqb %ymm2, %ymm9, %ymm2 ; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm8, %ymm4 ; AVX512F-NEXT: vpsrlw %xmm5, %ymm1, %ymm5 ; AVX512F-NEXT: vpand %ymm7, %ymm5, %ymm5 @@ -858,7 +858,7 @@ ; AVX512VL-NEXT: vpand %ymm6, %ymm9, %ymm8 ; AVX512VL-NEXT: vpor %ymm10, %ymm8, %ymm8 ; AVX512VL-NEXT: vpxor %xmm9, %xmm9, %xmm9 -; AVX512VL-NEXT: vpcmpeqb %ymm9, %ymm2, %ymm2 +; AVX512VL-NEXT: vpcmpeqb %ymm2, %ymm9, %ymm2 ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm4, %ymm8, %ymm4 ; AVX512VL-NEXT: vpsrlw %xmm5, %ymm1, %ymm5 ; AVX512VL-NEXT: vpand %ymm7, %ymm5, %ymm5 @@ -1160,7 +1160,7 @@ ; AVX512F-NEXT: vpmullw %ymm13, %ymm12, %ymm12 ; AVX512F-NEXT: vpsrlw $8, %ymm12, %ymm12 ; AVX512F-NEXT: vpackuswb %ymm10, %ymm12, %ymm10 -; AVX512F-NEXT: vpor %ymm10, %ymm3, %ymm3 +; AVX512F-NEXT: vpor %ymm3, %ymm10, %ymm3 ; AVX512F-NEXT: vpbroadcastq {{.*#+}} ymm10 = [18446744073709551360,18446744073709551360,18446744073709551360,18446744073709551360] ; AVX512F-NEXT: vpblendvb %ymm10, %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpsllw $4, %ymm0, %ymm3 @@ -1172,10 +1172,10 @@ ; AVX512F-NEXT: vpaddb %ymm0, %ymm0, %ymm3 ; AVX512F-NEXT: vpblendvb %ymm9, %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm1[8],ymm4[8],ymm1[9],ymm4[9],ymm1[10],ymm4[10],ymm1[11],ymm4[11],ymm1[12],ymm4[12],ymm1[13],ymm4[13],ymm1[14],ymm4[14],ymm1[15],ymm4[15],ymm1[24],ymm4[24],ymm1[25],ymm4[25],ymm1[26],ymm4[26],ymm1[27],ymm4[27],ymm1[28],ymm4[28],ymm1[29],ymm4[29],ymm1[30],ymm4[30],ymm1[31],ymm4[31] -; AVX512F-NEXT: vpmullw %ymm11, %ymm3, %ymm3 +; AVX512F-NEXT: vpmullw %ymm3, %ymm11, %ymm3 ; AVX512F-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm4 = ymm1[0],ymm4[0],ymm1[1],ymm4[1],ymm1[2],ymm4[2],ymm1[3],ymm4[3],ymm1[4],ymm4[4],ymm1[5],ymm4[5],ymm1[6],ymm4[6],ymm1[7],ymm4[7],ymm1[16],ymm4[16],ymm1[17],ymm4[17],ymm1[18],ymm4[18],ymm1[19],ymm4[19],ymm1[20],ymm4[20],ymm1[21],ymm4[21],ymm1[22],ymm4[22],ymm1[23],ymm4[23] -; AVX512F-NEXT: vpmullw %ymm13, %ymm4, %ymm4 +; AVX512F-NEXT: vpmullw %ymm4, %ymm13, %ymm4 ; AVX512F-NEXT: vpsrlw $8, %ymm4, %ymm4 ; AVX512F-NEXT: vpackuswb %ymm3, %ymm4, %ymm3 ; AVX512F-NEXT: vpor %ymm3, %ymm0, %ymm0 @@ -1205,7 +1205,7 @@ ; AVX512VL-NEXT: vpsrlw $8, %ymm4, %ymm4 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512VL-NEXT: # ymm10 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm10, %ymm4, %ymm4 +; AVX512VL-NEXT: vpmullw %ymm4, %ymm10, %ymm4 ; AVX512VL-NEXT: vpsrlw $8, %ymm4, %ymm4 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm11 = ymm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm11, %ymm11 @@ -1227,11 +1227,11 @@ ; AVX512VL-NEXT: vpblendvb %ymm9, %ymm3, %ymm0, %ymm0 ; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 -; AVX512VL-NEXT: vpmullw %ymm10, %ymm3, %ymm3 +; AVX512VL-NEXT: vpmullw %ymm3, %ymm10, %ymm3 ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm5 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 -; AVX512VL-NEXT: vpmullw %ymm12, %ymm5, %ymm5 +; AVX512VL-NEXT: vpmullw %ymm5, %ymm12, %ymm5 ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vpackuswb %ymm3, %ymm5, %ymm3 ; AVX512VL-NEXT: vpor %ymm3, %ymm0, %ymm0 diff --git a/llvm/test/CodeGen/X86/vector-fshr-rot-256.ll b/llvm/test/CodeGen/X86/vector-fshr-rot-256.ll --- a/llvm/test/CodeGen/X86/vector-fshr-rot-256.ll +++ b/llvm/test/CodeGen/X86/vector-fshr-rot-256.ll @@ -392,7 +392,7 @@ ; AVX1-NEXT: vpblendvb %xmm5, %xmm3, %xmm2, %xmm2 ; AVX1-NEXT: vpsrlw $7, %xmm2, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX1-NEXT: vpand %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpaddb %xmm2, %xmm2, %xmm6 ; AVX1-NEXT: vpor %xmm3, %xmm6, %xmm3 ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 @@ -413,7 +413,7 @@ ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 ; AVX1-NEXT: vpblendvb %xmm1, %xmm3, %xmm0, %xmm0 ; AVX1-NEXT: vpsrlw $7, %xmm0, %xmm3 -; AVX1-NEXT: vpand %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpaddb %xmm0, %xmm0, %xmm4 ; AVX1-NEXT: vpor %xmm3, %xmm4, %xmm3 ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 @@ -1219,7 +1219,7 @@ ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15] ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [256,2,4,8,16,32,64,128] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero ; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [256,128,64,32,16,8,4,2] @@ -1237,7 +1237,7 @@ ; AVX1-NEXT: vpackuswb %xmm1, %xmm5, %xmm1 ; AVX1-NEXT: vpor %xmm3, %xmm1, %xmm1 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero ; AVX1-NEXT: vpmullw %xmm6, %xmm5, %xmm6 diff --git a/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll b/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll --- a/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll +++ b/llvm/test/CodeGen/X86/vector-fshr-rot-512.ll @@ -146,7 +146,7 @@ ; AVX512F-NEXT: vpblendvb %ymm2, %ymm4, %ymm3, %ymm3 ; AVX512F-NEXT: vpsrlw $7, %ymm3, %ymm4 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm9 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX512F-NEXT: vpand %ymm9, %ymm4, %ymm4 +; AVX512F-NEXT: vpand %ymm4, %ymm9, %ymm4 ; AVX512F-NEXT: vpaddb %ymm3, %ymm3, %ymm10 ; AVX512F-NEXT: vpor %ymm4, %ymm10, %ymm4 ; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm2 @@ -163,12 +163,12 @@ ; AVX512F-NEXT: vpsrlw $6, %ymm0, %ymm3 ; AVX512F-NEXT: vpandn %ymm3, %ymm8, %ymm3 ; AVX512F-NEXT: vpsllw $2, %ymm0, %ymm4 -; AVX512F-NEXT: vpand %ymm8, %ymm4, %ymm4 +; AVX512F-NEXT: vpand %ymm4, %ymm8, %ymm4 ; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3 ; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1 ; AVX512F-NEXT: vpblendvb %ymm1, %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpsrlw $7, %ymm0, %ymm3 -; AVX512F-NEXT: vpand %ymm9, %ymm3, %ymm3 +; AVX512F-NEXT: vpand %ymm3, %ymm9, %ymm3 ; AVX512F-NEXT: vpaddb %ymm0, %ymm0, %ymm4 ; AVX512F-NEXT: vpor %ymm3, %ymm4, %ymm3 ; AVX512F-NEXT: vpaddb %ymm1, %ymm1, %ymm1 @@ -198,7 +198,7 @@ ; AVX512VL-NEXT: vpblendvb %ymm2, %ymm8, %ymm3, %ymm3 ; AVX512VL-NEXT: vpsrlw $7, %ymm3, %ymm5 ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX512VL-NEXT: vpand %ymm8, %ymm5, %ymm5 +; AVX512VL-NEXT: vpand %ymm5, %ymm8, %ymm5 ; AVX512VL-NEXT: vpaddb %ymm3, %ymm3, %ymm10 ; AVX512VL-NEXT: vpor %ymm5, %ymm10, %ymm5 ; AVX512VL-NEXT: vpaddb %ymm2, %ymm2, %ymm2 @@ -216,7 +216,7 @@ ; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1 ; AVX512VL-NEXT: vpblendvb %ymm1, %ymm4, %ymm0, %ymm0 ; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm3 -; AVX512VL-NEXT: vpand %ymm8, %ymm3, %ymm3 +; AVX512VL-NEXT: vpand %ymm3, %ymm8, %ymm3 ; AVX512VL-NEXT: vpaddb %ymm0, %ymm0, %ymm4 ; AVX512VL-NEXT: vpor %ymm3, %ymm4, %ymm3 ; AVX512VL-NEXT: vpaddb %ymm1, %ymm1, %ymm1 @@ -618,7 +618,7 @@ ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0],ymm5[0],ymm1[1],ymm5[1],ymm1[2],ymm5[2],ymm1[3],ymm5[3],ymm1[4],ymm5[4],ymm1[5],ymm5[5],ymm1[6],ymm5[6],ymm1[7],ymm5[7],ymm1[16],ymm5[16],ymm1[17],ymm5[17],ymm1[18],ymm5[18],ymm1[19],ymm5[19],ymm1[20],ymm5[20],ymm1[21],ymm5[21],ymm1[22],ymm5[22],ymm1[23],ymm5[23] ; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2] ; AVX512F-NEXT: # ymm11 = mem[0,1,0,1] -; AVX512F-NEXT: vpmullw %ymm11, %ymm1, %ymm1 +; AVX512F-NEXT: vpmullw %ymm1, %ymm11, %ymm1 ; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512F-NEXT: vpackuswb %ymm9, %ymm1, %ymm1 ; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -631,10 +631,10 @@ ; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm3 ; AVX512F-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm5[8],ymm0[9],ymm5[9],ymm0[10],ymm5[10],ymm0[11],ymm5[11],ymm0[12],ymm5[12],ymm0[13],ymm5[13],ymm0[14],ymm5[14],ymm0[15],ymm5[15],ymm0[24],ymm5[24],ymm0[25],ymm5[25],ymm0[26],ymm5[26],ymm0[27],ymm5[27],ymm0[28],ymm5[28],ymm0[29],ymm5[29],ymm0[30],ymm5[30],ymm0[31],ymm5[31] -; AVX512F-NEXT: vpmullw %ymm10, %ymm3, %ymm3 +; AVX512F-NEXT: vpmullw %ymm3, %ymm10, %ymm3 ; AVX512F-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[1],ymm5[1],ymm0[2],ymm5[2],ymm0[3],ymm5[3],ymm0[4],ymm5[4],ymm0[5],ymm5[5],ymm0[6],ymm5[6],ymm0[7],ymm5[7],ymm0[16],ymm5[16],ymm0[17],ymm5[17],ymm0[18],ymm5[18],ymm0[19],ymm5[19],ymm0[20],ymm5[20],ymm0[21],ymm5[21],ymm0[22],ymm5[22],ymm0[23],ymm5[23] -; AVX512F-NEXT: vpmullw %ymm11, %ymm0, %ymm0 +; AVX512F-NEXT: vpmullw %ymm0, %ymm11, %ymm0 ; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512F-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpor %ymm0, %ymm2, %ymm0 @@ -662,13 +662,13 @@ ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512VL-NEXT: # ymm9 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm9, %ymm5, %ymm5 +; AVX512VL-NEXT: vpmullw %ymm5, %ymm9, %ymm5 ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2] ; AVX512VL-NEXT: # ymm10 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm10, %ymm1, %ymm1 +; AVX512VL-NEXT: vpmullw %ymm1, %ymm10, %ymm1 ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vpackuswb %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -682,11 +682,11 @@ ; AVX512VL-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 -; AVX512VL-NEXT: vpmullw %ymm9, %ymm3, %ymm3 +; AVX512VL-NEXT: vpmullw %ymm3, %ymm9, %ymm3 ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 -; AVX512VL-NEXT: vpmullw %ymm10, %ymm0, %ymm0 +; AVX512VL-NEXT: vpmullw %ymm0, %ymm10, %ymm0 ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512VL-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512VL-NEXT: vpor %ymm0, %ymm2, %ymm0 diff --git a/llvm/test/CodeGen/X86/vector-idiv-sdiv-256.ll b/llvm/test/CodeGen/X86/vector-idiv-sdiv-256.ll --- a/llvm/test/CodeGen/X86/vector-idiv-sdiv-256.ll +++ b/llvm/test/CodeGen/X86/vector-idiv-sdiv-256.ll @@ -582,7 +582,7 @@ ; AVX1-NEXT: vpaddb %xmm1, %xmm2, %xmm2 ; AVX1-NEXT: vpsrlw $7, %xmm2, %xmm4 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX1-NEXT: vpand %xmm8, %xmm4, %xmm4 +; AVX1-NEXT: vpand %xmm4, %xmm8, %xmm4 ; AVX1-NEXT: vpsrlw $2, %xmm2, %xmm2 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63] ; AVX1-NEXT: vpand %xmm6, %xmm2, %xmm2 @@ -605,7 +605,7 @@ ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2 ; AVX1-NEXT: vpaddb %xmm0, %xmm2, %xmm2 ; AVX1-NEXT: vpsrlw $7, %xmm2, %xmm3 -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3 ; AVX1-NEXT: vpsrlw $2, %xmm2, %xmm2 ; AVX1-NEXT: vpand %xmm6, %xmm2, %xmm2 ; AVX1-NEXT: vpxor %xmm7, %xmm2, %xmm2 diff --git a/llvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll b/llvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll --- a/llvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll +++ b/llvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll @@ -499,7 +499,7 @@ ; AVX512F-NEXT: vpsubb %ymm7, %ymm2, %ymm2 ; AVX512F-NEXT: vpsllw $3, %ymm2, %ymm4 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm8 = [248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248] -; AVX512F-NEXT: vpand %ymm8, %ymm4, %ymm4 +; AVX512F-NEXT: vpand %ymm4, %ymm8, %ymm4 ; AVX512F-NEXT: vpsubb %ymm4, %ymm2, %ymm2 ; AVX512F-NEXT: vpaddb %ymm2, %ymm1, %ymm1 ; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm2 @@ -520,7 +520,7 @@ ; AVX512F-NEXT: vpaddb %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpsubb %ymm7, %ymm2, %ymm2 ; AVX512F-NEXT: vpsllw $3, %ymm2, %ymm3 -; AVX512F-NEXT: vpand %ymm8, %ymm3, %ymm3 +; AVX512F-NEXT: vpand %ymm3, %ymm8, %ymm3 ; AVX512F-NEXT: vpsubb %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpaddb %ymm2, %ymm0, %ymm0 ; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 diff --git a/llvm/test/CodeGen/X86/vector-idiv-udiv-512.ll b/llvm/test/CodeGen/X86/vector-idiv-udiv-512.ll --- a/llvm/test/CodeGen/X86/vector-idiv-udiv-512.ll +++ b/llvm/test/CodeGen/X86/vector-idiv-udiv-512.ll @@ -496,7 +496,7 @@ ; AVX512F-NEXT: vpand %ymm5, %ymm3, %ymm3 ; AVX512F-NEXT: vpsllw $3, %ymm3, %ymm7 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm8 = [248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248] -; AVX512F-NEXT: vpand %ymm8, %ymm7, %ymm7 +; AVX512F-NEXT: vpand %ymm7, %ymm8, %ymm7 ; AVX512F-NEXT: vpsubb %ymm7, %ymm3, %ymm3 ; AVX512F-NEXT: vpaddb %ymm3, %ymm1, %ymm1 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm2[8],ymm0[9],ymm2[9],ymm0[10],ymm2[10],ymm0[11],ymm2[11],ymm0[12],ymm2[12],ymm0[13],ymm2[13],ymm0[14],ymm2[14],ymm0[15],ymm2[15],ymm0[24],ymm2[24],ymm0[25],ymm2[25],ymm0[26],ymm2[26],ymm0[27],ymm2[27],ymm0[28],ymm2[28],ymm0[29],ymm2[29],ymm0[30],ymm2[30],ymm0[31],ymm2[31] @@ -513,7 +513,7 @@ ; AVX512F-NEXT: vpsrlw $2, %ymm2, %ymm2 ; AVX512F-NEXT: vpand %ymm5, %ymm2, %ymm2 ; AVX512F-NEXT: vpsllw $3, %ymm2, %ymm3 -; AVX512F-NEXT: vpand %ymm8, %ymm3, %ymm3 +; AVX512F-NEXT: vpand %ymm3, %ymm8, %ymm3 ; AVX512F-NEXT: vpsubb %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpaddb %ymm2, %ymm0, %ymm0 ; AVX512F-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0 diff --git a/llvm/test/CodeGen/X86/vector-rotate-256.ll b/llvm/test/CodeGen/X86/vector-rotate-256.ll --- a/llvm/test/CodeGen/X86/vector-rotate-256.ll +++ b/llvm/test/CodeGen/X86/vector-rotate-256.ll @@ -354,7 +354,7 @@ ; AVX1-NEXT: vpblendvb %xmm5, %xmm3, %xmm2, %xmm2 ; AVX1-NEXT: vpsrlw $7, %xmm2, %xmm3 ; AVX1-NEXT: vmovdqa {{.*#+}} xmm8 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3 ; AVX1-NEXT: vpaddb %xmm2, %xmm2, %xmm7 ; AVX1-NEXT: vpor %xmm3, %xmm7, %xmm3 ; AVX1-NEXT: vpaddb %xmm5, %xmm5, %xmm5 @@ -374,7 +374,7 @@ ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 ; AVX1-NEXT: vpblendvb %xmm1, %xmm3, %xmm0, %xmm0 ; AVX1-NEXT: vpsrlw $7, %xmm0, %xmm3 -; AVX1-NEXT: vpand %xmm8, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm8, %xmm3 ; AVX1-NEXT: vpaddb %xmm0, %xmm0, %xmm4 ; AVX1-NEXT: vpor %xmm3, %xmm4, %xmm3 ; AVX1-NEXT: vpaddb %xmm1, %xmm1, %xmm1 @@ -1134,7 +1134,7 @@ ; AVX1-NEXT: vpxor %xmm8, %xmm8, %xmm8 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm1[8],xmm8[8],xmm1[9],xmm8[9],xmm1[10],xmm8[10],xmm1[11],xmm8[11],xmm1[12],xmm8[12],xmm1[13],xmm8[13],xmm1[14],xmm8[14],xmm1[15],xmm8[15] ; AVX1-NEXT: vmovdqa {{.*#+}} xmm9 = [256,128,64,32,16,8,4,2] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero ; AVX1-NEXT: vmovdqa {{.*#+}} xmm6 = [256,2,4,8,16,32,64,128] @@ -1152,7 +1152,7 @@ ; AVX1-NEXT: vpackuswb %xmm1, %xmm5, %xmm1 ; AVX1-NEXT: vpor %xmm3, %xmm1, %xmm1 ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm3 = xmm0[8],xmm8[8],xmm0[9],xmm8[9],xmm0[10],xmm8[10],xmm0[11],xmm8[11],xmm0[12],xmm8[12],xmm0[13],xmm8[13],xmm0[14],xmm8[14],xmm0[15],xmm8[15] -; AVX1-NEXT: vpmullw %xmm9, %xmm3, %xmm3 +; AVX1-NEXT: vpmullw %xmm3, %xmm9, %xmm3 ; AVX1-NEXT: vpsrlw $8, %xmm3, %xmm3 ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero ; AVX1-NEXT: vpmullw %xmm6, %xmm5, %xmm6 diff --git a/llvm/test/CodeGen/X86/vector-rotate-512.ll b/llvm/test/CodeGen/X86/vector-rotate-512.ll --- a/llvm/test/CodeGen/X86/vector-rotate-512.ll +++ b/llvm/test/CodeGen/X86/vector-rotate-512.ll @@ -579,7 +579,7 @@ ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0],ymm5[0],ymm1[1],ymm5[1],ymm1[2],ymm5[2],ymm1[3],ymm5[3],ymm1[4],ymm5[4],ymm1[5],ymm5[5],ymm1[6],ymm5[6],ymm1[7],ymm5[7],ymm1[16],ymm5[16],ymm1[17],ymm5[17],ymm1[18],ymm5[18],ymm1[19],ymm5[19],ymm1[20],ymm5[20],ymm1[21],ymm5[21],ymm1[22],ymm5[22],ymm1[23],ymm5[23] ; AVX512F-NEXT: vbroadcasti128 {{.*#+}} ymm11 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512F-NEXT: # ymm11 = mem[0,1,0,1] -; AVX512F-NEXT: vpmullw %ymm11, %ymm1, %ymm1 +; AVX512F-NEXT: vpmullw %ymm1, %ymm11, %ymm1 ; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512F-NEXT: vpackuswb %ymm9, %ymm1, %ymm1 ; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -592,10 +592,10 @@ ; AVX512F-NEXT: vpaddb %ymm2, %ymm2, %ymm3 ; AVX512F-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512F-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8],ymm5[8],ymm0[9],ymm5[9],ymm0[10],ymm5[10],ymm0[11],ymm5[11],ymm0[12],ymm5[12],ymm0[13],ymm5[13],ymm0[14],ymm5[14],ymm0[15],ymm5[15],ymm0[24],ymm5[24],ymm0[25],ymm5[25],ymm0[26],ymm5[26],ymm0[27],ymm5[27],ymm0[28],ymm5[28],ymm0[29],ymm5[29],ymm0[30],ymm5[30],ymm0[31],ymm5[31] -; AVX512F-NEXT: vpmullw %ymm10, %ymm3, %ymm3 +; AVX512F-NEXT: vpmullw %ymm3, %ymm10, %ymm3 ; AVX512F-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512F-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0],ymm5[0],ymm0[1],ymm5[1],ymm0[2],ymm5[2],ymm0[3],ymm5[3],ymm0[4],ymm5[4],ymm0[5],ymm5[5],ymm0[6],ymm5[6],ymm0[7],ymm5[7],ymm0[16],ymm5[16],ymm0[17],ymm5[17],ymm0[18],ymm5[18],ymm0[19],ymm5[19],ymm0[20],ymm5[20],ymm0[21],ymm5[21],ymm0[22],ymm5[22],ymm0[23],ymm5[23] -; AVX512F-NEXT: vpmullw %ymm11, %ymm0, %ymm0 +; AVX512F-NEXT: vpmullw %ymm0, %ymm11, %ymm0 ; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512F-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512F-NEXT: vpor %ymm0, %ymm2, %ymm0 @@ -623,13 +623,13 @@ ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm9 = [256,128,64,32,16,8,4,2,256,128,64,32,16,8,4,2] ; AVX512VL-NEXT: # ymm9 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm9, %ymm5, %ymm5 +; AVX512VL-NEXT: vpmullw %ymm5, %ymm9, %ymm5 ; AVX512VL-NEXT: vpsrlw $8, %ymm5, %ymm5 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vbroadcasti128 {{.*#+}} ymm10 = [256,2,4,8,16,32,64,128,256,2,4,8,16,32,64,128] ; AVX512VL-NEXT: # ymm10 = mem[0,1,0,1] -; AVX512VL-NEXT: vpmullw %ymm10, %ymm1, %ymm1 +; AVX512VL-NEXT: vpmullw %ymm1, %ymm10, %ymm1 ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1 ; AVX512VL-NEXT: vpackuswb %ymm5, %ymm1, %ymm1 ; AVX512VL-NEXT: vpor %ymm1, %ymm2, %ymm1 @@ -643,11 +643,11 @@ ; AVX512VL-NEXT: vpblendvb %ymm8, %ymm3, %ymm2, %ymm2 ; AVX512VL-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31] ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 -; AVX512VL-NEXT: vpmullw %ymm9, %ymm3, %ymm3 +; AVX512VL-NEXT: vpmullw %ymm3, %ymm9, %ymm3 ; AVX512VL-NEXT: vpsrlw $8, %ymm3, %ymm3 ; AVX512VL-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23] ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 -; AVX512VL-NEXT: vpmullw %ymm10, %ymm0, %ymm0 +; AVX512VL-NEXT: vpmullw %ymm0, %ymm10, %ymm0 ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0 ; AVX512VL-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 ; AVX512VL-NEXT: vpor %ymm0, %ymm2, %ymm0 diff --git a/llvm/test/CodeGen/X86/vector-shift-by-select-loop.ll b/llvm/test/CodeGen/X86/vector-shift-by-select-loop.ll --- a/llvm/test/CodeGen/X86/vector-shift-by-select-loop.ll +++ b/llvm/test/CodeGen/X86/vector-shift-by-select-loop.ll @@ -179,15 +179,15 @@ ; AVX1-NEXT: vmovq {{.*#+}} xmm4 = mem[0],zero ; AVX1-NEXT: vmovq {{.*#+}} xmm5 = mem[0],zero ; AVX1-NEXT: vmovq {{.*#+}} xmm6 = mem[0],zero -; AVX1-NEXT: vpcmpeqb %xmm11, %xmm3, %xmm3 +; AVX1-NEXT: vpcmpeqb %xmm3, %xmm11, %xmm3 ; AVX1-NEXT: vpmovsxbd %xmm3, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm3 = xmm3[1,1,2,3] ; AVX1-NEXT: vpmovsxbd %xmm3, %xmm3 -; AVX1-NEXT: vpcmpeqb %xmm11, %xmm4, %xmm4 +; AVX1-NEXT: vpcmpeqb %xmm4, %xmm11, %xmm4 ; AVX1-NEXT: vpmovsxbd %xmm4, %xmm8 ; AVX1-NEXT: vpshufd {{.*#+}} xmm4 = xmm4[1,1,2,3] ; AVX1-NEXT: vpmovsxbd %xmm4, %xmm4 -; AVX1-NEXT: vpcmpeqb %xmm11, %xmm5, %xmm5 +; AVX1-NEXT: vpcmpeqb %xmm5, %xmm11, %xmm5 ; AVX1-NEXT: vmovdqu (%rdi,%rcx,4), %xmm9 ; AVX1-NEXT: vpslld %xmm2, %xmm9, %xmm10 ; AVX1-NEXT: vpslld %xmm1, %xmm9, %xmm0 @@ -195,7 +195,7 @@ ; AVX1-NEXT: vpmovsxbd %xmm5, %xmm7 ; AVX1-NEXT: vpshufd {{.*#+}} xmm5 = xmm5[1,1,2,3] ; AVX1-NEXT: vpmovsxbd %xmm5, %xmm5 -; AVX1-NEXT: vpcmpeqb %xmm11, %xmm6, %xmm6 +; AVX1-NEXT: vpcmpeqb %xmm6, %xmm11, %xmm6 ; AVX1-NEXT: vmovdqu 16(%rdi,%rcx,4), %xmm0 ; AVX1-NEXT: vpslld %xmm2, %xmm0, %xmm2 ; AVX1-NEXT: vpslld %xmm1, %xmm0, %xmm0 diff --git a/llvm/test/CodeGen/X86/vector-trunc-math.ll b/llvm/test/CodeGen/X86/vector-trunc-math.ll --- a/llvm/test/CodeGen/X86/vector-trunc-math.ll +++ b/llvm/test/CodeGen/X86/vector-trunc-math.ll @@ -2983,20 +2983,20 @@ ; AVX1-LABEL: trunc_and_v16i64_v16i8: ; AVX1: # %bb.0: ; AVX1-NEXT: vmovaps {{.*#+}} ymm8 = [255,255,255,255] -; AVX1-NEXT: vandps %ymm8, %ymm7, %ymm7 +; AVX1-NEXT: vandps %ymm7, %ymm8, %ymm7 ; AVX1-NEXT: vandps %ymm7, %ymm3, %ymm3 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm7 ; AVX1-NEXT: vpackusdw %xmm7, %xmm3, %xmm3 -; AVX1-NEXT: vandps %ymm8, %ymm6, %ymm6 +; AVX1-NEXT: vandps %ymm6, %ymm8, %ymm6 ; AVX1-NEXT: vandps %ymm6, %ymm2, %ymm2 ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm6 ; AVX1-NEXT: vpackusdw %xmm6, %xmm2, %xmm2 ; AVX1-NEXT: vpackusdw %xmm3, %xmm2, %xmm2 -; AVX1-NEXT: vandps %ymm8, %ymm5, %ymm3 +; AVX1-NEXT: vandps %ymm5, %ymm8, %ymm3 ; AVX1-NEXT: vandps %ymm3, %ymm1, %ymm1 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 ; AVX1-NEXT: vpackusdw %xmm3, %xmm1, %xmm1 -; AVX1-NEXT: vandps %ymm8, %ymm4, %ymm3 +; AVX1-NEXT: vandps %ymm4, %ymm8, %ymm3 ; AVX1-NEXT: vandps %ymm3, %ymm0, %ymm0 ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3 ; AVX1-NEXT: vpackusdw %xmm3, %xmm0, %xmm0 diff --git a/llvm/test/CodeGen/X86/vector-trunc-packus.ll b/llvm/test/CodeGen/X86/vector-trunc-packus.ll --- a/llvm/test/CodeGen/X86/vector-trunc-packus.ll +++ b/llvm/test/CodeGen/X86/vector-trunc-packus.ll @@ -2692,9 +2692,9 @@ ; AVX1-NEXT: vpand %xmm1, %xmm3, %xmm1 ; AVX1-NEXT: vpackusdw %xmm2, %xmm1, %xmm1 ; AVX1-NEXT: vpcmpgtq %xmm5, %xmm11, %xmm2 -; AVX1-NEXT: vpand %xmm11, %xmm2, %xmm2 +; AVX1-NEXT: vpand %xmm2, %xmm11, %xmm2 ; AVX1-NEXT: vpcmpgtq %xmm5, %xmm10, %xmm3 -; AVX1-NEXT: vpand %xmm10, %xmm3, %xmm3 +; AVX1-NEXT: vpand %xmm3, %xmm10, %xmm3 ; AVX1-NEXT: vpackusdw %xmm2, %xmm3, %xmm2 ; AVX1-NEXT: vpackusdw %xmm1, %xmm2, %xmm1 ; AVX1-NEXT: vpackuswb %xmm0, %xmm1, %xmm0 diff --git a/llvm/test/CodeGen/X86/x86-interleaved-access.ll b/llvm/test/CodeGen/X86/x86-interleaved-access.ll --- a/llvm/test/CodeGen/X86/x86-interleaved-access.ll +++ b/llvm/test/CodeGen/X86/x86-interleaved-access.ll @@ -1412,8 +1412,8 @@ ; AVX1-NEXT: vorps %ymm10, %ymm14, %ymm10 ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm14 ; AVX1-NEXT: vandnps %ymm14, %ymm12, %ymm14 -; AVX1-NEXT: vandps %ymm12, %ymm1, %ymm1 -; AVX1-NEXT: vorps %ymm14, %ymm1, %ymm1 +; AVX1-NEXT: vandps %ymm1, %ymm12, %ymm1 +; AVX1-NEXT: vorps %ymm1, %ymm14, %ymm1 ; AVX1-NEXT: vpalignr {{.*#+}} xmm4 = xmm13[11,12,13,14,15],xmm4[0,1,2,3,4,5,6,7,8,9,10] ; AVX1-NEXT: vpalignr {{.*#+}} xmm3 = xmm3[11,12,13,14,15],xmm13[0,1,2,3,4,5,6,7,8,9,10] ; AVX1-NEXT: vpalignr {{.*#+}} xmm12 = xmm15[11,12,13,14,15],xmm7[0,1,2,3,4,5,6,7,8,9,10] @@ -1434,7 +1434,7 @@ ; AVX1-NEXT: vpalignr {{.*#+}} xmm4 = xmm7[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] ; AVX1-NEXT: vpaddb %xmm3, %xmm4, %xmm3 ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm3, %ymm0 -; AVX1-NEXT: vpaddb %xmm9, %xmm1, %xmm1 +; AVX1-NEXT: vpaddb %xmm1, %xmm9, %xmm1 ; AVX1-NEXT: vpalignr {{.*#+}} xmm3 = xmm6[10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9] ; AVX1-NEXT: vpaddb %xmm1, %xmm3, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1