diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -4832,11 +4832,31 @@ // Return true for any instruction the copies the high bits of the first source // operand into the unused high bits of the destination operand. +// Also returns true for instructions that have two inputs where one may +// be undef and we want it to use the same register as the other input. static bool hasUndefRegUpdate(unsigned Opcode, unsigned &OpNum, bool ForLoadFold = false) { // Set the OpNum parameter to the first source operand. OpNum = 1; switch (Opcode) { + case X86::PACKSSWBrr: + case X86::PACKUSWBrr: + case X86::PACKSSDWrr: + case X86::PACKUSDWrr: + case X86::VPACKSSWBrr: + case X86::VPACKUSWBrr: + case X86::VPACKSSDWrr: + case X86::VPACKUSDWrr: + case X86::VPACKSSWBZ128rr: + case X86::VPACKUSWBZ128rr: + case X86::VPACKSSDWZ128rr: + case X86::VPACKUSDWZ128rr: + // These instructions are sometimes used with an undef second source to + // truncate 128-bit vectors to 64-bit with undefined high bits. Return + // true here so BreakFalseDeps will assign this source to the same register + // as the first source to avoid a false dependency. + OpNum = 2; + return true; case X86::VCVTSI2SSrr: case X86::VCVTSI2SSrm: case X86::VCVTSI2SSrr_Int: diff --git a/llvm/test/CodeGen/X86/avg.ll b/llvm/test/CodeGen/X86/avg.ll --- a/llvm/test/CodeGen/X86/avg.ll +++ b/llvm/test/CodeGen/X86/avg.ll @@ -151,7 +151,7 @@ ; SSE2-NEXT: pand %xmm6, %xmm5 ; SSE2-NEXT: pand %xmm6, %xmm1 ; SSE2-NEXT: packuswb %xmm5, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movq %xmm1, (%rax) ; SSE2-NEXT: movdqu %xmm0, (%rax) ; SSE2-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bitcast-and-setcc-128.ll b/llvm/test/CodeGen/X86/bitcast-and-setcc-128.ll --- a/llvm/test/CodeGen/X86/bitcast-and-setcc-128.ll +++ b/llvm/test/CodeGen/X86/bitcast-and-setcc-128.ll @@ -12,7 +12,7 @@ ; SSE2-SSSE3-NEXT: pcmpgtw %xmm1, %xmm0 ; SSE2-SSSE3-NEXT: pcmpgtw %xmm3, %xmm2 ; SSE2-SSSE3-NEXT: pand %xmm0, %xmm2 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm2 +; SSE2-SSSE3-NEXT: packsswb %xmm2, %xmm2 ; SSE2-SSSE3-NEXT: pmovmskb %xmm2, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -557,7 +557,7 @@ ; SSE2-SSSE3-NEXT: pcmpgtb %xmm3, %xmm2 ; SSE2-SSSE3-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] ; SSE2-SSSE3-NEXT: pand %xmm0, %xmm1 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm1 +; SSE2-SSSE3-NEXT: packsswb %xmm1, %xmm1 ; SSE2-SSSE3-NEXT: pmovmskb %xmm1, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll b/llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll --- a/llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll +++ b/llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll @@ -234,7 +234,7 @@ ; SSE2-SSSE3-NEXT: pcmpgtd %xmm6, %xmm4 ; SSE2-SSSE3-NEXT: packssdw %xmm5, %xmm4 ; SSE2-SSSE3-NEXT: pand %xmm0, %xmm4 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm4 +; SSE2-SSSE3-NEXT: packsswb %xmm4, %xmm4 ; SSE2-SSSE3-NEXT: pmovmskb %xmm4, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -303,7 +303,7 @@ ; SSE2-SSSE3-NEXT: pcmpgtd %xmm6, %xmm4 ; SSE2-SSSE3-NEXT: packssdw %xmm5, %xmm4 ; SSE2-SSSE3-NEXT: por %xmm0, %xmm4 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm4 +; SSE2-SSSE3-NEXT: packsswb %xmm4, %xmm4 ; SSE2-SSSE3-NEXT: pmovmskb %xmm4, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -380,7 +380,7 @@ ; SSE2-SSSE3-NEXT: pcmpeqd {{[0-9]+}}(%rsp), %xmm8 ; SSE2-SSSE3-NEXT: packssdw %xmm9, %xmm8 ; SSE2-SSSE3-NEXT: pand %xmm6, %xmm8 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm8 +; SSE2-SSSE3-NEXT: packsswb %xmm8, %xmm8 ; SSE2-SSSE3-NEXT: pmovmskb %xmm8, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -461,7 +461,7 @@ ; SSE2-SSSE3-NEXT: cmpltps %xmm4, %xmm6 ; SSE2-SSSE3-NEXT: packssdw %xmm7, %xmm6 ; SSE2-SSSE3-NEXT: pand %xmm2, %xmm6 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm6 +; SSE2-SSSE3-NEXT: packsswb %xmm6, %xmm6 ; SSE2-SSSE3-NEXT: pmovmskb %xmm6, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -512,7 +512,7 @@ ; SSE2-SSSE3-NEXT: cmpltps %xmm4, %xmm6 ; SSE2-SSSE3-NEXT: packssdw %xmm7, %xmm6 ; SSE2-SSSE3-NEXT: pxor %xmm2, %xmm6 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm6 +; SSE2-SSSE3-NEXT: packsswb %xmm6, %xmm6 ; SSE2-SSSE3-NEXT: pmovmskb %xmm6, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq @@ -577,7 +577,7 @@ ; SSE2-SSSE3-NEXT: cmpltps {{[0-9]+}}(%rsp), %xmm8 ; SSE2-SSSE3-NEXT: packssdw %xmm9, %xmm8 ; SSE2-SSSE3-NEXT: pand %xmm4, %xmm8 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm8 +; SSE2-SSSE3-NEXT: packsswb %xmm8, %xmm8 ; SSE2-SSSE3-NEXT: pmovmskb %xmm8, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bitcast-and-setcc-512.ll b/llvm/test/CodeGen/X86/bitcast-and-setcc-512.ll --- a/llvm/test/CodeGen/X86/bitcast-and-setcc-512.ll +++ b/llvm/test/CodeGen/X86/bitcast-and-setcc-512.ll @@ -27,7 +27,7 @@ ; SSE-NEXT: packssdw %xmm9, %xmm8 ; SSE-NEXT: packssdw %xmm10, %xmm8 ; SSE-NEXT: pand %xmm0, %xmm8 -; SSE-NEXT: packsswb %xmm0, %xmm8 +; SSE-NEXT: packsswb %xmm8, %xmm8 ; SSE-NEXT: pmovmskb %xmm8, %eax ; SSE-NEXT: # kill: def $al killed $al killed $eax ; SSE-NEXT: retq @@ -123,7 +123,7 @@ ; SSE-NEXT: packssdw %xmm9, %xmm8 ; SSE-NEXT: packssdw %xmm10, %xmm8 ; SSE-NEXT: pand %xmm4, %xmm8 -; SSE-NEXT: packsswb %xmm0, %xmm8 +; SSE-NEXT: packsswb %xmm8, %xmm8 ; SSE-NEXT: pmovmskb %xmm8, %eax ; SSE-NEXT: # kill: def $al killed $al killed $eax ; SSE-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bitcast-setcc-256.ll b/llvm/test/CodeGen/X86/bitcast-setcc-256.ll --- a/llvm/test/CodeGen/X86/bitcast-setcc-256.ll +++ b/llvm/test/CodeGen/X86/bitcast-setcc-256.ll @@ -117,7 +117,7 @@ ; SSE2-SSSE3-NEXT: cmpltps %xmm1, %xmm3 ; SSE2-SSSE3-NEXT: cmpltps %xmm0, %xmm2 ; SSE2-SSSE3-NEXT: packssdw %xmm3, %xmm2 -; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm2 +; SSE2-SSSE3-NEXT: packsswb %xmm2, %xmm2 ; SSE2-SSSE3-NEXT: pmovmskb %xmm2, %eax ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bitcast-setcc-512.ll b/llvm/test/CodeGen/X86/bitcast-setcc-512.ll --- a/llvm/test/CodeGen/X86/bitcast-setcc-512.ll +++ b/llvm/test/CodeGen/X86/bitcast-setcc-512.ll @@ -354,7 +354,7 @@ ; SSE-NEXT: cmpltpd %xmm0, %xmm4 ; SSE-NEXT: packssdw %xmm5, %xmm4 ; SSE-NEXT: packssdw %xmm6, %xmm4 -; SSE-NEXT: packsswb %xmm0, %xmm4 +; SSE-NEXT: packsswb %xmm4, %xmm4 ; SSE-NEXT: pmovmskb %xmm4, %eax ; SSE-NEXT: # kill: def $al killed $al killed $eax ; SSE-NEXT: retq @@ -608,7 +608,7 @@ ; SSE-NEXT: pcmpgtq %xmm0, %xmm4 ; SSE-NEXT: packssdw %xmm2, %xmm4 ; SSE-NEXT: packssdw %xmm3, %xmm4 -; SSE-NEXT: packsswb %xmm0, %xmm4 +; SSE-NEXT: packsswb %xmm4, %xmm4 ; SSE-NEXT: pmovmskb %xmm4, %eax ; SSE-NEXT: movb %al, (%rdi) ; SSE-NEXT: retq diff --git a/llvm/test/CodeGen/X86/combine-udiv.ll b/llvm/test/CodeGen/X86/combine-udiv.ll --- a/llvm/test/CodeGen/X86/combine-udiv.ll +++ b/llvm/test/CodeGen/X86/combine-udiv.ll @@ -653,7 +653,7 @@ ; SSE2-NEXT: movd %eax, %xmm3 ; SSE2-NEXT: pmullw %xmm0, %xmm3 ; SSE2-NEXT: psrlw $8, %xmm3 -; SSE2-NEXT: packuswb %xmm0, %xmm3 +; SSE2-NEXT: packuswb %xmm3, %xmm3 ; SSE2-NEXT: psrlw $7, %xmm3 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm3 ; SSE2-NEXT: pandn %xmm3, %xmm2 @@ -669,7 +669,7 @@ ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm2 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero ; SSE41-NEXT: pmullw %xmm0, %xmm2 ; SSE41-NEXT: psrlw $8, %xmm2 -; SSE41-NEXT: packuswb %xmm0, %xmm2 +; SSE41-NEXT: packuswb %xmm2, %xmm2 ; SSE41-NEXT: psrlw $7, %xmm2 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] @@ -684,7 +684,7 @@ ; AVX-NEXT: vpmovzxbw {{.*#+}} xmm2 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero ; AVX-NEXT: vpmullw %xmm1, %xmm2, %xmm1 ; AVX-NEXT: vpsrlw $8, %xmm1, %xmm1 -; AVX-NEXT: vpackuswb %xmm0, %xmm1, %xmm1 +; AVX-NEXT: vpackuswb %xmm1, %xmm1, %xmm1 ; AVX-NEXT: vpsrlw $7, %xmm1, %xmm1 ; AVX-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1 ; AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 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 @@ -15,7 +15,7 @@ ; SSE-LABEL: compressstore_v8f64_v8i1: ; SSE: ## %bb.0: ; SSE-NEXT: psllw $15, %xmm4 -; SSE-NEXT: packsswb %xmm0, %xmm4 +; SSE-NEXT: packsswb %xmm4, %xmm4 ; SSE-NEXT: pmovmskb %xmm4, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: jne LBB0_1 @@ -84,7 +84,7 @@ ; AVX1-LABEL: compressstore_v8f64_v8i1: ; AVX1: ## %bb.0: ; AVX1-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX1-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX1-NEXT: vpmovmskb %xmm2, %eax ; AVX1-NEXT: testb $1, %al ; AVX1-NEXT: je LBB0_2 @@ -152,7 +152,7 @@ ; AVX2-LABEL: compressstore_v8f64_v8i1: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX2-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX2-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX2-NEXT: vpmovmskb %xmm2, %eax ; AVX2-NEXT: testb $1, %al ; AVX2-NEXT: je LBB0_2 @@ -845,7 +845,7 @@ ; SSE2-LABEL: compressstore_v8f32_v8i1: ; SSE2: ## %bb.0: ; SSE2-NEXT: psllw $15, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB4_1 @@ -924,7 +924,7 @@ ; SSE42-LABEL: compressstore_v8f32_v8i1: ; SSE42: ## %bb.0: ; SSE42-NEXT: psllw $15, %xmm2 -; SSE42-NEXT: packsswb %xmm0, %xmm2 +; SSE42-NEXT: packsswb %xmm2, %xmm2 ; SSE42-NEXT: pmovmskb %xmm2, %eax ; SSE42-NEXT: testb $1, %al ; SSE42-NEXT: jne LBB4_1 @@ -993,7 +993,7 @@ ; AVX1-LABEL: compressstore_v8f32_v8i1: ; AVX1: ## %bb.0: ; AVX1-NEXT: vpsllw $15, %xmm1, %xmm1 -; AVX1-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX1-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX1-NEXT: vpmovmskb %xmm1, %eax ; AVX1-NEXT: testb $1, %al ; AVX1-NEXT: jne LBB4_1 @@ -1064,7 +1064,7 @@ ; AVX2-LABEL: compressstore_v8f32_v8i1: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpsllw $15, %xmm1, %xmm1 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovmskb %xmm1, %eax ; AVX2-NEXT: testb $1, %al ; AVX2-NEXT: jne LBB4_1 @@ -2729,7 +2729,7 @@ ; SSE2-LABEL: compressstore_v8i64_v8i1: ; SSE2: ## %bb.0: ; SSE2-NEXT: psllw $15, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB9_1 @@ -2802,7 +2802,7 @@ ; SSE42-LABEL: compressstore_v8i64_v8i1: ; SSE42: ## %bb.0: ; SSE42-NEXT: psllw $15, %xmm4 -; SSE42-NEXT: packsswb %xmm0, %xmm4 +; SSE42-NEXT: packsswb %xmm4, %xmm4 ; SSE42-NEXT: pmovmskb %xmm4, %eax ; SSE42-NEXT: testb $1, %al ; SSE42-NEXT: jne LBB9_1 @@ -2871,7 +2871,7 @@ ; AVX1-LABEL: compressstore_v8i64_v8i1: ; AVX1: ## %bb.0: ; AVX1-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX1-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX1-NEXT: vpmovmskb %xmm2, %eax ; AVX1-NEXT: testb $1, %al ; AVX1-NEXT: je LBB9_2 @@ -2939,7 +2939,7 @@ ; AVX2-LABEL: compressstore_v8i64_v8i1: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX2-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX2-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX2-NEXT: vpmovmskb %xmm2, %eax ; AVX2-NEXT: testb $1, %al ; AVX2-NEXT: je LBB9_2 @@ -3182,7 +3182,7 @@ ; SSE2: ## %bb.0: ; SSE2-NEXT: pxor %xmm2, %xmm2 ; SSE2-NEXT: pcmpeqw %xmm1, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB11_1 @@ -3260,7 +3260,7 @@ ; SSE42: ## %bb.0: ; SSE42-NEXT: pxor %xmm2, %xmm2 ; SSE42-NEXT: pcmpeqw %xmm1, %xmm2 -; SSE42-NEXT: packsswb %xmm0, %xmm2 +; SSE42-NEXT: packsswb %xmm2, %xmm2 ; SSE42-NEXT: pmovmskb %xmm2, %eax ; SSE42-NEXT: testb $1, %al ; SSE42-NEXT: jne LBB11_1 @@ -3330,7 +3330,7 @@ ; AVX1OR2: ## %bb.0: ; AVX1OR2-NEXT: vpxor %xmm2, %xmm2, %xmm2 ; AVX1OR2-NEXT: vpcmpeqw %xmm2, %xmm1, %xmm1 -; AVX1OR2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX1OR2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX1OR2-NEXT: vpmovmskb %xmm1, %eax ; AVX1OR2-NEXT: testb $1, %al ; AVX1OR2-NEXT: jne LBB11_1 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 @@ -296,7 +296,7 @@ ; SSE-LABEL: expandload_v8f64_v8i1: ; SSE: ## %bb.0: ; SSE-NEXT: psllw $15, %xmm4 -; SSE-NEXT: packsswb %xmm0, %xmm4 +; SSE-NEXT: packsswb %xmm4, %xmm4 ; SSE-NEXT: pmovmskb %xmm4, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: jne LBB2_1 @@ -365,7 +365,7 @@ ; AVX1-LABEL: expandload_v8f64_v8i1: ; AVX1: ## %bb.0: ; AVX1-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX1-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX1-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX1-NEXT: vpmovmskb %xmm2, %eax ; AVX1-NEXT: testb $1, %al ; AVX1-NEXT: jne LBB2_1 @@ -446,7 +446,7 @@ ; AVX2-LABEL: expandload_v8f64_v8i1: ; AVX2: ## %bb.0: ; AVX2-NEXT: vpsllw $15, %xmm2, %xmm2 -; AVX2-NEXT: vpacksswb %xmm0, %xmm2, %xmm2 +; AVX2-NEXT: vpacksswb %xmm2, %xmm2, %xmm2 ; AVX2-NEXT: vpmovmskb %xmm2, %eax ; AVX2-NEXT: testb $1, %al ; AVX2-NEXT: jne LBB2_1 @@ -2954,7 +2954,7 @@ ; SSE: ## %bb.0: ; SSE-NEXT: pxor %xmm2, %xmm2 ; SSE-NEXT: pcmpeqw %xmm1, %xmm2 -; SSE-NEXT: packsswb %xmm0, %xmm2 +; SSE-NEXT: packsswb %xmm2, %xmm2 ; SSE-NEXT: pmovmskb %xmm2, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: jne LBB11_1 @@ -3024,7 +3024,7 @@ ; AVX1OR2: ## %bb.0: ; AVX1OR2-NEXT: vpxor %xmm2, %xmm2, %xmm2 ; AVX1OR2-NEXT: vpcmpeqw %xmm2, %xmm1, %xmm1 -; AVX1OR2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX1OR2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX1OR2-NEXT: vpmovmskb %xmm1, %eax ; AVX1OR2-NEXT: testb $1, %al ; AVX1OR2-NEXT: jne LBB11_1 diff --git a/llvm/test/CodeGen/X86/masked_gather.ll b/llvm/test/CodeGen/X86/masked_gather.ll --- a/llvm/test/CodeGen/X86/masked_gather.ll +++ b/llvm/test/CodeGen/X86/masked_gather.ll @@ -1099,7 +1099,7 @@ ; SSE-NEXT: pcmpeqd %xmm5, %xmm6 ; SSE-NEXT: pcmpeqd %xmm3, %xmm5 ; SSE-NEXT: packssdw %xmm5, %xmm6 -; SSE-NEXT: packsswb %xmm0, %xmm6 +; SSE-NEXT: packsswb %xmm6, %xmm6 ; SSE-NEXT: pmovmskb %xmm6, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: je .LBB4_19 @@ -1168,7 +1168,7 @@ ; SSE-NEXT: pcmpeqd %xmm7, %xmm2 ; SSE-NEXT: pcmpeqd %xmm7, %xmm3 ; SSE-NEXT: packssdw %xmm3, %xmm2 -; SSE-NEXT: packsswb %xmm0, %xmm2 +; SSE-NEXT: packsswb %xmm2, %xmm2 ; SSE-NEXT: pmovmskb %xmm2, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: je .LBB4_37 diff --git a/llvm/test/CodeGen/X86/masked_load.ll b/llvm/test/CodeGen/X86/masked_load.ll --- a/llvm/test/CodeGen/X86/masked_load.ll +++ b/llvm/test/CodeGen/X86/masked_load.ll @@ -393,7 +393,7 @@ ; SSE: ## %bb.0: ; SSE-NEXT: pxor %xmm5, %xmm5 ; SSE-NEXT: pcmpeqw %xmm0, %xmm5 -; SSE-NEXT: packsswb %xmm0, %xmm5 +; SSE-NEXT: packsswb %xmm5, %xmm5 ; SSE-NEXT: pmovmskb %xmm5, %eax ; SSE-NEXT: testb $1, %al ; SSE-NEXT: jne LBB5_1 @@ -541,7 +541,7 @@ ; SSE2-NEXT: pand %xmm0, %xmm1 ; SSE2-NEXT: packssdw %xmm2, %xmm1 ; SSE2-NEXT: packssdw %xmm3, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB6_1 @@ -1645,7 +1645,7 @@ ; SSE2: ## %bb.0: ; SSE2-NEXT: pxor %xmm5, %xmm5 ; SSE2-NEXT: pcmpeqw %xmm0, %xmm5 -; SSE2-NEXT: packsswb %xmm0, %xmm5 +; SSE2-NEXT: packsswb %xmm5, %xmm5 ; SSE2-NEXT: pmovmskb %xmm5, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB15_1 @@ -1716,7 +1716,7 @@ ; SSE42: ## %bb.0: ; SSE42-NEXT: pxor %xmm5, %xmm5 ; SSE42-NEXT: pcmpeqw %xmm0, %xmm5 -; SSE42-NEXT: packsswb %xmm0, %xmm5 +; SSE42-NEXT: packsswb %xmm5, %xmm5 ; SSE42-NEXT: pmovmskb %xmm5, %eax ; SSE42-NEXT: testb $1, %al ; SSE42-NEXT: jne LBB15_1 @@ -1864,7 +1864,7 @@ ; SSE2-NEXT: pand %xmm0, %xmm1 ; SSE2-NEXT: packssdw %xmm2, %xmm1 ; SSE2-NEXT: packssdw %xmm3, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB16_1 diff --git a/llvm/test/CodeGen/X86/masked_store.ll b/llvm/test/CodeGen/X86/masked_store.ll --- a/llvm/test/CodeGen/X86/masked_store.ll +++ b/llvm/test/CodeGen/X86/masked_store.ll @@ -353,7 +353,7 @@ ; SSE2-LABEL: store_v8f32_v8i32: ; SSE2: ## %bb.0: ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB5_1 @@ -425,7 +425,7 @@ ; SSE4-LABEL: store_v8f32_v8i32: ; SSE4: ## %bb.0: ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne LBB5_1 @@ -1423,7 +1423,7 @@ ; SSE2: ## %bb.0: ; SSE2-NEXT: pxor %xmm2, %xmm2 ; SSE2-NEXT: pcmpeqw %xmm0, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne LBB13_1 @@ -1494,7 +1494,7 @@ ; SSE4: ## %bb.0: ; SSE4-NEXT: pxor %xmm2, %xmm2 ; SSE4-NEXT: pcmpeqw %xmm0, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne LBB13_1 diff --git a/llvm/test/CodeGen/X86/masked_store_trunc.ll b/llvm/test/CodeGen/X86/masked_store_trunc.ll --- a/llvm/test/CodeGen/X86/masked_store_trunc.ll +++ b/llvm/test/CodeGen/X86/masked_store_trunc.ll @@ -19,7 +19,7 @@ ; SSE2-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB0_1 @@ -94,7 +94,7 @@ ; SSE4-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE4-NEXT: pxor %xmm1, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB0_1 @@ -232,7 +232,7 @@ ; SSE2-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB1_1 @@ -315,7 +315,7 @@ ; SSE4-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE4-NEXT: pxor %xmm1, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB1_1 @@ -624,7 +624,7 @@ ; SSE2-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -702,7 +702,7 @@ ; SSE4-NEXT: pcmpeqd %xmm6, %xmm4 ; SSE4-NEXT: pxor %xmm1, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB2_1 @@ -3331,7 +3331,7 @@ ; SSE2-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE2-NEXT: pxor %xmm1, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB11_1 @@ -3410,7 +3410,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB11_1 @@ -3714,7 +3714,7 @@ ; SSE2-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE2-NEXT: pxor %xmm1, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -3787,7 +3787,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB12_1 @@ -6269,7 +6269,7 @@ ; SSE2-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE2-NEXT: pxor %xmm2, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -6336,7 +6336,7 @@ ; SSE4-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE4-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE4-NEXT: pxor %xmm2, %xmm1 -; SSE4-NEXT: packsswb %xmm0, %xmm1 +; SSE4-NEXT: packsswb %xmm1, %xmm1 ; SSE4-NEXT: pmovmskb %xmm1, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB17_1 @@ -6402,7 +6402,7 @@ ; AVX-NEXT: vpcmpeqw %xmm2, %xmm1, %xmm1 ; AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm1 -; AVX-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX-NEXT: vpmovmskb %xmm1, %eax ; AVX-NEXT: testb $1, %al ; AVX-NEXT: jne .LBB17_1 diff --git a/llvm/test/CodeGen/X86/masked_store_trunc_ssat.ll b/llvm/test/CodeGen/X86/masked_store_trunc_ssat.ll --- a/llvm/test/CodeGen/X86/masked_store_trunc_ssat.ll +++ b/llvm/test/CodeGen/X86/masked_store_trunc_ssat.ll @@ -119,7 +119,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm7, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: je .LBB0_2 @@ -228,7 +228,7 @@ ; SSE4-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB0_1 @@ -506,7 +506,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB1_1 @@ -618,7 +618,7 @@ ; SSE4-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB1_1 @@ -1062,7 +1062,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -1161,14 +1161,14 @@ ; SSE4-NEXT: blendvpd %xmm0, %xmm10, %xmm1 ; SSE4-NEXT: packssdw %xmm3, %xmm1 ; SSE4-NEXT: packssdw %xmm1, %xmm7 -; SSE4-NEXT: packsswb %xmm0, %xmm7 +; SSE4-NEXT: packsswb %xmm7, %xmm7 ; SSE4-NEXT: pcmpeqd %xmm8, %xmm5 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm0, %xmm5 ; SSE4-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB2_1 @@ -1842,7 +1842,7 @@ ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm1 ; SSE4-NEXT: packssdw %xmm3, %xmm1 -; SSE4-NEXT: packssdw %xmm0, %xmm1 +; SSE4-NEXT: packssdw %xmm1, %xmm1 ; SSE4-NEXT: pcmpeqd %xmm2, %xmm4 ; SSE4-NEXT: movmskps %xmm4, %eax ; SSE4-NEXT: xorl $15, %eax @@ -4238,7 +4238,7 @@ ; SSE2-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE2-NEXT: pxor %xmm1, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB11_1 @@ -4315,7 +4315,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB11_1 @@ -4619,7 +4619,7 @@ ; SSE2-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE2-NEXT: pxor %xmm1, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -4690,7 +4690,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB12_1 @@ -7234,7 +7234,7 @@ ; SSE2-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE2-NEXT: pxor %xmm2, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -7301,7 +7301,7 @@ ; SSE4-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE4-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE4-NEXT: pxor %xmm2, %xmm1 -; SSE4-NEXT: packsswb %xmm0, %xmm1 +; SSE4-NEXT: packsswb %xmm1, %xmm1 ; SSE4-NEXT: pmovmskb %xmm1, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB17_1 @@ -7367,7 +7367,7 @@ ; AVX-NEXT: vpcmpeqw %xmm2, %xmm1, %xmm1 ; AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm1 -; AVX-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX-NEXT: vpmovmskb %xmm1, %eax ; AVX-NEXT: testb $1, %al ; AVX-NEXT: jne .LBB17_1 diff --git a/llvm/test/CodeGen/X86/masked_store_trunc_usat.ll b/llvm/test/CodeGen/X86/masked_store_trunc_usat.ll --- a/llvm/test/CodeGen/X86/masked_store_trunc_usat.ll +++ b/llvm/test/CodeGen/X86/masked_store_trunc_usat.ll @@ -65,7 +65,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: je .LBB0_2 @@ -167,7 +167,7 @@ ; SSE4-NEXT: pcmpeqd %xmm9, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB0_1 @@ -390,7 +390,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm1, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB1_1 @@ -495,7 +495,7 @@ ; SSE4-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB1_1 @@ -870,14 +870,14 @@ ; SSE2-NEXT: por %xmm2, %xmm0 ; SSE2-NEXT: packuswb %xmm1, %xmm0 ; SSE2-NEXT: packuswb %xmm0, %xmm7 -; SSE2-NEXT: packuswb %xmm0, %xmm7 +; SSE2-NEXT: packuswb %xmm7, %xmm7 ; SSE2-NEXT: pcmpeqd %xmm8, %xmm5 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE2-NEXT: pxor %xmm0, %xmm5 ; SSE2-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE2-NEXT: pxor %xmm0, %xmm4 ; SSE2-NEXT: packssdw %xmm5, %xmm4 -; SSE2-NEXT: packsswb %xmm0, %xmm4 +; SSE2-NEXT: packsswb %xmm4, %xmm4 ; SSE2-NEXT: pmovmskb %xmm4, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm7, %ecx @@ -969,14 +969,14 @@ ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: packusdw %xmm7, %xmm6 ; SSE4-NEXT: packusdw %xmm6, %xmm1 -; SSE4-NEXT: packuswb %xmm0, %xmm1 +; SSE4-NEXT: packuswb %xmm1, %xmm1 ; SSE4-NEXT: pcmpeqd %xmm8, %xmm5 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE4-NEXT: pxor %xmm0, %xmm5 ; SSE4-NEXT: pcmpeqd %xmm8, %xmm4 ; SSE4-NEXT: pxor %xmm0, %xmm4 ; SSE4-NEXT: packssdw %xmm5, %xmm4 -; SSE4-NEXT: packsswb %xmm0, %xmm4 +; SSE4-NEXT: packsswb %xmm4, %xmm4 ; SSE4-NEXT: pmovmskb %xmm4, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB2_1 @@ -1579,7 +1579,7 @@ ; SSE4-NEXT: movdqa %xmm4, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm5 ; SSE4-NEXT: packusdw %xmm3, %xmm5 -; SSE4-NEXT: packusdw %xmm0, %xmm5 +; SSE4-NEXT: packusdw %xmm5, %xmm5 ; SSE4-NEXT: pcmpeqd %xmm2, %xmm6 ; SSE4-NEXT: movmskps %xmm6, %eax ; SSE4-NEXT: xorl $15, %eax @@ -3958,7 +3958,7 @@ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm2 ; SSE2-NEXT: pxor %xmm6, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: jne .LBB11_1 @@ -4038,7 +4038,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB11_1 @@ -4352,14 +4352,14 @@ ; SSE2-NEXT: pandn %xmm9, %xmm6 ; SSE2-NEXT: por %xmm0, %xmm6 ; SSE2-NEXT: packuswb %xmm4, %xmm6 -; SSE2-NEXT: packuswb %xmm0, %xmm6 +; SSE2-NEXT: packuswb %xmm6, %xmm6 ; SSE2-NEXT: pcmpeqd %xmm8, %xmm3 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0 ; SSE2-NEXT: pxor %xmm0, %xmm3 ; SSE2-NEXT: pcmpeqd %xmm8, %xmm2 ; SSE2-NEXT: pxor %xmm0, %xmm2 ; SSE2-NEXT: packssdw %xmm3, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm6, %ecx @@ -4433,7 +4433,7 @@ ; SSE4-NEXT: pcmpeqd %xmm4, %xmm2 ; SSE4-NEXT: pxor %xmm1, %xmm2 ; SSE4-NEXT: packssdw %xmm3, %xmm2 -; SSE4-NEXT: packsswb %xmm0, %xmm2 +; SSE4-NEXT: packsswb %xmm2, %xmm2 ; SSE4-NEXT: pmovmskb %xmm2, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB12_1 @@ -7057,7 +7057,7 @@ ; SSE2-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE2-NEXT: pxor %xmm2, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb $1, %al ; SSE2-NEXT: movd %xmm0, %ecx @@ -7125,7 +7125,7 @@ ; SSE4-NEXT: pcmpeqw %xmm1, %xmm2 ; SSE4-NEXT: pcmpeqd %xmm1, %xmm1 ; SSE4-NEXT: pxor %xmm2, %xmm1 -; SSE4-NEXT: packsswb %xmm0, %xmm1 +; SSE4-NEXT: packsswb %xmm1, %xmm1 ; SSE4-NEXT: pmovmskb %xmm1, %eax ; SSE4-NEXT: testb $1, %al ; SSE4-NEXT: jne .LBB17_1 @@ -7192,7 +7192,7 @@ ; AVX-NEXT: vpcmpeqw %xmm2, %xmm1, %xmm1 ; AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm1 -; AVX-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX-NEXT: vpmovmskb %xmm1, %eax ; AVX-NEXT: testb $1, %al ; AVX-NEXT: jne .LBB17_1 diff --git a/llvm/test/CodeGen/X86/oddshuffles.ll b/llvm/test/CodeGen/X86/oddshuffles.ll --- a/llvm/test/CodeGen/X86/oddshuffles.ll +++ b/llvm/test/CodeGen/X86/oddshuffles.ll @@ -696,7 +696,7 @@ ; SSE2-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,3,2,1] ; SSE2-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,3,2,1,4,5,6,7] ; SSE2-NEXT: pshufhw {{.*#+}} xmm4 = xmm4[0,1,2,3,6,5,4,7] -; SSE2-NEXT: packuswb %xmm0, %xmm4 +; SSE2-NEXT: packuswb %xmm4, %xmm4 ; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [0,255,255,0,255,255,0,255,255,255,255,255,255,255,255,255] ; SSE2-NEXT: movdqa %xmm0, %xmm6 ; SSE2-NEXT: pand %xmm5, %xmm6 @@ -712,7 +712,7 @@ ; SSE2-NEXT: pshufd {{.*#+}} xmm5 = xmm5[0,3,2,1] ; SSE2-NEXT: pshuflw {{.*#+}} xmm5 = xmm5[1,2,3,0,4,5,6,7] ; SSE2-NEXT: pshufhw {{.*#+}} xmm5 = xmm5[0,1,2,3,5,6,7,4] -; SSE2-NEXT: packuswb %xmm0, %xmm5 +; SSE2-NEXT: packuswb %xmm5, %xmm5 ; SSE2-NEXT: movdqa {{.*#+}} xmm6 = [255,0,255,255,0,255,255,0,255,255,255,255,255,255,255,255] ; SSE2-NEXT: pand %xmm6, %xmm0 ; SSE2-NEXT: pandn %xmm1, %xmm6 @@ -833,7 +833,7 @@ ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm2[2,1,2,3] ; SSE2-NEXT: pshuflw {{.*#+}} xmm1 = xmm1[2,1,1,0,4,5,6,7] ; SSE2-NEXT: pshufhw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,7,6,7] -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [255,0,255,255,0,255,255,0,255,255,255,255,255,255,255,255] ; SSE2-NEXT: pand %xmm2, %xmm1 ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[2,1,3,3,4,5,6,7] diff --git a/llvm/test/CodeGen/X86/vec_fp_to_int.ll b/llvm/test/CodeGen/X86/vec_fp_to_int.ll --- a/llvm/test/CodeGen/X86/vec_fp_to_int.ll +++ b/llvm/test/CodeGen/X86/vec_fp_to_int.ll @@ -348,7 +348,7 @@ ; AVX1-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 ; AVX1-NEXT: vmovapd {{.*#+}} ymm1 = [2.147483648E+9,2.147483648E+9,2.147483648E+9,2.147483648E+9] ; AVX1-NEXT: vcmpltpd %ymm1, %ymm0, %ymm2 -; AVX1-NEXT: vpackssdw %xmm0, %xmm2, %xmm2 +; AVX1-NEXT: vpackssdw %xmm2, %xmm2, %xmm2 ; AVX1-NEXT: vcvttpd2dq %ymm0, %xmm3 ; AVX1-NEXT: vsubpd %ymm1, %ymm0, %ymm0 ; AVX1-NEXT: vcvttpd2dq %ymm0, %xmm0 @@ -363,7 +363,7 @@ ; AVX2-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 ; AVX2-NEXT: vbroadcastsd {{.*#+}} ymm1 = [2.147483648E+9,2.147483648E+9,2.147483648E+9,2.147483648E+9] ; AVX2-NEXT: vcmpltpd %ymm1, %ymm0, %ymm2 -; AVX2-NEXT: vpackssdw %xmm0, %xmm2, %xmm2 +; AVX2-NEXT: vpackssdw %xmm2, %xmm2, %xmm2 ; AVX2-NEXT: vsubpd %ymm1, %ymm0, %ymm1 ; AVX2-NEXT: vcvttpd2dq %ymm1, %xmm1 ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [2147483648,2147483648,2147483648,2147483648] diff --git a/llvm/test/CodeGen/X86/vec_saddo.ll b/llvm/test/CodeGen/X86/vec_saddo.ll --- a/llvm/test/CodeGen/X86/vec_saddo.ll +++ b/llvm/test/CodeGen/X86/vec_saddo.ll @@ -546,7 +546,7 @@ ; AVX2-NEXT: vpackssdw %xmm4, %xmm0, %xmm0 ; AVX2-NEXT: vpacksswb %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) diff --git a/llvm/test/CodeGen/X86/vec_smulo.ll b/llvm/test/CodeGen/X86/vec_smulo.ll --- a/llvm/test/CodeGen/X86/vec_smulo.ll +++ b/llvm/test/CodeGen/X86/vec_smulo.ll @@ -1237,7 +1237,7 @@ ; AVX2-NEXT: vpackssdw %xmm4, %xmm0, %xmm0 ; AVX2-NEXT: vpacksswb %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) diff --git a/llvm/test/CodeGen/X86/vec_ssubo.ll b/llvm/test/CodeGen/X86/vec_ssubo.ll --- a/llvm/test/CodeGen/X86/vec_ssubo.ll +++ b/llvm/test/CodeGen/X86/vec_ssubo.ll @@ -551,7 +551,7 @@ ; AVX2-NEXT: vpackssdw %xmm4, %xmm0, %xmm0 ; AVX2-NEXT: vpacksswb %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) diff --git a/llvm/test/CodeGen/X86/vec_uaddo.ll b/llvm/test/CodeGen/X86/vec_uaddo.ll --- a/llvm/test/CodeGen/X86/vec_uaddo.ll +++ b/llvm/test/CodeGen/X86/vec_uaddo.ll @@ -635,7 +635,7 @@ ; AVX2-NEXT: vpackssdw %xmm4, %xmm0, %xmm0 ; AVX2-NEXT: vpacksswb %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) 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 @@ -1050,11 +1050,11 @@ ; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6 ; AVX2-NEXT: vpackssdw %xmm6, %xmm5, %xmm5 -; AVX2-NEXT: vpacksswb %xmm0, %xmm5, %xmm5 +; AVX2-NEXT: vpacksswb %xmm5, %xmm5, %xmm5 ; AVX2-NEXT: vpmulld %ymm2, %ymm0, %ymm2 ; AVX2-NEXT: vpmulld %ymm3, %ymm1, %ymm3 ; AVX2-NEXT: vpmovsxbd %xmm5, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm4, %xmm1 +; AVX2-NEXT: vpacksswb %xmm4, %xmm4, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) diff --git a/llvm/test/CodeGen/X86/vec_usubo.ll b/llvm/test/CodeGen/X86/vec_usubo.ll --- a/llvm/test/CodeGen/X86/vec_usubo.ll +++ b/llvm/test/CodeGen/X86/vec_usubo.ll @@ -678,7 +678,7 @@ ; AVX2-NEXT: vpackssdw %xmm4, %xmm0, %xmm0 ; AVX2-NEXT: vpacksswb %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpmovsxbd %xmm0, %ymm0 -; AVX2-NEXT: vpacksswb %xmm0, %xmm1, %xmm1 +; AVX2-NEXT: vpacksswb %xmm1, %xmm1, %xmm1 ; AVX2-NEXT: vpmovsxbd %xmm1, %ymm1 ; AVX2-NEXT: vmovdqa %ymm3, 32(%rdi) ; AVX2-NEXT: vmovdqa %ymm2, (%rdi) diff --git a/llvm/test/CodeGen/X86/vector-compare-all_of.ll b/llvm/test/CodeGen/X86/vector-compare-all_of.ll --- a/llvm/test/CodeGen/X86/vector-compare-all_of.ll +++ b/llvm/test/CodeGen/X86/vector-compare-all_of.ll @@ -1100,7 +1100,7 @@ ; SSE-LABEL: bool_reduction_v8i16: ; SSE: # %bb.0: ; SSE-NEXT: pcmpgtw %xmm0, %xmm1 -; SSE-NEXT: packsswb %xmm0, %xmm1 +; SSE-NEXT: packsswb %xmm1, %xmm1 ; SSE-NEXT: pmovmskb %xmm1, %eax ; SSE-NEXT: cmpb $-1, %al ; SSE-NEXT: sete %al @@ -1227,7 +1227,7 @@ ; SSE-NEXT: pminud %xmm0, %xmm2 ; SSE-NEXT: pcmpeqd %xmm0, %xmm2 ; SSE-NEXT: packssdw %xmm3, %xmm2 -; SSE-NEXT: packsswb %xmm0, %xmm2 +; SSE-NEXT: packsswb %xmm2, %xmm2 ; SSE-NEXT: pmovmskb %xmm2, %eax ; SSE-NEXT: cmpb $-1, %al ; SSE-NEXT: sete %al diff --git a/llvm/test/CodeGen/X86/vector-compare-any_of.ll b/llvm/test/CodeGen/X86/vector-compare-any_of.ll --- a/llvm/test/CodeGen/X86/vector-compare-any_of.ll +++ b/llvm/test/CodeGen/X86/vector-compare-any_of.ll @@ -996,7 +996,7 @@ ; SSE-LABEL: bool_reduction_v8i16: ; SSE: # %bb.0: ; SSE-NEXT: pcmpgtw %xmm0, %xmm1 -; SSE-NEXT: packsswb %xmm0, %xmm1 +; SSE-NEXT: packsswb %xmm1, %xmm1 ; SSE-NEXT: pmovmskb %xmm1, %eax ; SSE-NEXT: testb %al, %al ; SSE-NEXT: setne %al @@ -1123,7 +1123,7 @@ ; SSE-NEXT: pminud %xmm0, %xmm2 ; SSE-NEXT: pcmpeqd %xmm0, %xmm2 ; SSE-NEXT: packssdw %xmm3, %xmm2 -; SSE-NEXT: packsswb %xmm0, %xmm2 +; SSE-NEXT: packsswb %xmm2, %xmm2 ; SSE-NEXT: pmovmskb %xmm2, %eax ; SSE-NEXT: testb %al, %al ; SSE-NEXT: setne %al diff --git a/llvm/test/CodeGen/X86/vector-idiv-udiv-128.ll b/llvm/test/CodeGen/X86/vector-idiv-udiv-128.ll --- a/llvm/test/CodeGen/X86/vector-idiv-udiv-128.ll +++ b/llvm/test/CodeGen/X86/vector-idiv-udiv-128.ll @@ -317,7 +317,7 @@ ; SSE41-NEXT: psllw $7, %xmm4 ; SSE41-NEXT: pblendw {{.*#+}} xmm4 = xmm2[0,1,2,3,4,5,6],xmm4[7] ; SSE41-NEXT: psrlw $8, %xmm4 -; SSE41-NEXT: packuswb %xmm0, %xmm4 +; SSE41-NEXT: packuswb %xmm4, %xmm4 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm2 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero ; SSE41-NEXT: pmullw {{.*}}(%rip), %xmm2 ; SSE41-NEXT: psrlw $8, %xmm2 @@ -816,7 +816,7 @@ ; SSE41-NEXT: psllw $7, %xmm4 ; SSE41-NEXT: pblendw {{.*#+}} xmm4 = xmm2[0,1,2,3,4,5,6],xmm4[7] ; SSE41-NEXT: psrlw $8, %xmm4 -; SSE41-NEXT: packuswb %xmm0, %xmm4 +; SSE41-NEXT: packuswb %xmm4, %xmm4 ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm4 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[4],zero,xmm4[5],zero,xmm4[6],zero,xmm4[7],zero ; SSE41-NEXT: pmullw {{.*}}(%rip), %xmm4 ; SSE41-NEXT: psrlw $8, %xmm4 diff --git a/llvm/test/CodeGen/X86/vector-reduce-and-bool.ll b/llvm/test/CodeGen/X86/vector-reduce-and-bool.ll --- a/llvm/test/CodeGen/X86/vector-reduce-and-bool.ll +++ b/llvm/test/CodeGen/X86/vector-reduce-and-bool.ll @@ -511,7 +511,7 @@ ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] ; SSE2-NEXT: movsd {{.*#+}} xmm2 = xmm0[0],xmm2[1] ; SSE2-NEXT: psllw $15, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: cmpb $-1, %al ; SSE2-NEXT: sete %al @@ -1404,7 +1404,7 @@ ; SSE2-NEXT: pand %xmm0, %xmm1 ; SSE2-NEXT: packssdw %xmm2, %xmm1 ; SSE2-NEXT: packssdw %xmm3, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: cmpb $-1, %al ; SSE2-NEXT: sete %al diff --git a/llvm/test/CodeGen/X86/vector-reduce-or-bool.ll b/llvm/test/CodeGen/X86/vector-reduce-or-bool.ll --- a/llvm/test/CodeGen/X86/vector-reduce-or-bool.ll +++ b/llvm/test/CodeGen/X86/vector-reduce-or-bool.ll @@ -505,7 +505,7 @@ ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] ; SSE2-NEXT: movsd {{.*#+}} xmm2 = xmm0[0],xmm2[1] ; SSE2-NEXT: psllw $15, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: testb %al, %al ; SSE2-NEXT: setne %al @@ -1393,7 +1393,7 @@ ; SSE2-NEXT: pand %xmm0, %xmm1 ; SSE2-NEXT: packssdw %xmm2, %xmm1 ; SSE2-NEXT: packssdw %xmm3, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: testb %al, %al ; SSE2-NEXT: setne %al diff --git a/llvm/test/CodeGen/X86/vector-reduce-xor-bool.ll b/llvm/test/CodeGen/X86/vector-reduce-xor-bool.ll --- a/llvm/test/CodeGen/X86/vector-reduce-xor-bool.ll +++ b/llvm/test/CodeGen/X86/vector-reduce-xor-bool.ll @@ -554,7 +554,7 @@ ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] ; SSE2-NEXT: movsd {{.*#+}} xmm2 = xmm0[0],xmm2[1] ; SSE2-NEXT: psllw $15, %xmm2 -; SSE2-NEXT: packsswb %xmm0, %xmm2 +; SSE2-NEXT: packsswb %xmm2, %xmm2 ; SSE2-NEXT: pmovmskb %xmm2, %eax ; SSE2-NEXT: xorb $0, %al ; SSE2-NEXT: setnp %al @@ -1582,7 +1582,7 @@ ; SSE2-NEXT: pand %xmm0, %xmm1 ; SSE2-NEXT: packssdw %xmm2, %xmm1 ; SSE2-NEXT: packssdw %xmm3, %xmm1 -; SSE2-NEXT: packsswb %xmm0, %xmm1 +; SSE2-NEXT: packsswb %xmm1, %xmm1 ; SSE2-NEXT: pmovmskb %xmm1, %eax ; SSE2-NEXT: xorb $0, %al ; SSE2-NEXT: setnp %al diff --git a/llvm/test/CodeGen/X86/vector-shuffle-sse41.ll b/llvm/test/CodeGen/X86/vector-shuffle-sse41.ll --- a/llvm/test/CodeGen/X86/vector-shuffle-sse41.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-sse41.ll @@ -38,14 +38,14 @@ ; SSE41-LABEL: blend_packusdw_packuswb: ; SSE41: # %bb.0: ; SSE41-NEXT: packusdw %xmm0, %xmm0 -; SSE41-NEXT: packuswb %xmm0, %xmm2 +; SSE41-NEXT: packuswb %xmm2, %xmm2 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] ; SSE41-NEXT: retq ; ; AVX-LABEL: blend_packusdw_packuswb: ; AVX: # %bb.0: ; AVX-NEXT: vpackusdw %xmm0, %xmm0, %xmm0 -; AVX-NEXT: vpackuswb %xmm0, %xmm2, %xmm1 +; AVX-NEXT: vpackuswb %xmm2, %xmm2, %xmm1 ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] ; AVX-NEXT: retq %p0 = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) 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 @@ -1512,7 +1512,7 @@ ; SSE41-NEXT: por %xmm4, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE41-NEXT: packusdw %xmm2, %xmm1 -; SSE41-NEXT: packusdw %xmm0, %xmm1 +; SSE41-NEXT: packusdw %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -1766,7 +1766,7 @@ ; SSE41-NEXT: por %xmm4, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE41-NEXT: packusdw %xmm2, %xmm1 -; SSE41-NEXT: packusdw %xmm0, %xmm1 +; SSE41-NEXT: packusdw %xmm1, %xmm1 ; SSE41-NEXT: movq %xmm1, (%rdi) ; SSE41-NEXT: retq ; @@ -2870,8 +2870,8 @@ ; SSE2-NEXT: pand %xmm3, %xmm1 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 ; SSE2-NEXT: packuswb %xmm1, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movd %xmm1, %eax ; SSE2-NEXT: movw %ax, (%rdi) ; SSE2-NEXT: retq @@ -3313,8 +3313,8 @@ ; SSE2-NEXT: pand %xmm8, %xmm2 ; SSE2-NEXT: pand %xmm1, %xmm2 ; SSE2-NEXT: packuswb %xmm3, %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 ; SSE2-NEXT: movd %xmm2, (%rdi) ; SSE2-NEXT: retq ; @@ -3838,7 +3838,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5 ; SSE41-NEXT: packusdw %xmm3, %xmm5 ; SSE41-NEXT: packusdw %xmm5, %xmm1 -; SSE41-NEXT: packuswb %xmm0, %xmm1 +; SSE41-NEXT: packuswb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -4030,7 +4030,7 @@ ; SSE2-NEXT: pand %xmm1, %xmm2 ; SSE2-NEXT: packuswb %xmm4, %xmm2 ; SSE2-NEXT: packuswb %xmm2, %xmm3 -; SSE2-NEXT: packuswb %xmm0, %xmm3 +; SSE2-NEXT: packuswb %xmm3, %xmm3 ; SSE2-NEXT: movq %xmm3, (%rsi) ; SSE2-NEXT: retq ; @@ -4142,7 +4142,7 @@ ; SSSE3-NEXT: pand %xmm1, %xmm2 ; SSSE3-NEXT: packuswb %xmm4, %xmm2 ; SSSE3-NEXT: packuswb %xmm2, %xmm3 -; SSSE3-NEXT: packuswb %xmm0, %xmm3 +; SSSE3-NEXT: packuswb %xmm3, %xmm3 ; SSSE3-NEXT: movq %xmm3, (%rsi) ; SSSE3-NEXT: retq ; @@ -4240,7 +4240,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5 ; SSE41-NEXT: packusdw %xmm2, %xmm5 ; SSE41-NEXT: packusdw %xmm5, %xmm4 -; SSE41-NEXT: packuswb %xmm0, %xmm4 +; SSE41-NEXT: packuswb %xmm4, %xmm4 ; SSE41-NEXT: movq %xmm4, (%rsi) ; SSE41-NEXT: retq ; @@ -5148,7 +5148,7 @@ ; SSE41-NEXT: pminsd {{.*}}(%rip), %xmm0 ; SSE41-NEXT: pxor %xmm1, %xmm1 ; SSE41-NEXT: pmaxsd %xmm0, %xmm1 -; SSE41-NEXT: packusdw %xmm0, %xmm1 +; SSE41-NEXT: packusdw %xmm1, %xmm1 ; SSE41-NEXT: packuswb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq @@ -5230,8 +5230,8 @@ ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1 ; SSE2-NEXT: pand %xmm2, %xmm1 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movd %xmm1, (%rdi) ; SSE2-NEXT: retq ; @@ -5256,8 +5256,8 @@ ; SSE41-NEXT: pminsd {{.*}}(%rip), %xmm0 ; SSE41-NEXT: pxor %xmm1, %xmm1 ; SSE41-NEXT: pmaxsd %xmm0, %xmm1 -; SSE41-NEXT: packusdw %xmm0, %xmm1 -; SSE41-NEXT: packuswb %xmm0, %xmm1 +; SSE41-NEXT: packusdw %xmm1, %xmm1 +; SSE41-NEXT: packuswb %xmm1, %xmm1 ; SSE41-NEXT: movd %xmm1, (%rdi) ; SSE41-NEXT: retq ; diff --git a/llvm/test/CodeGen/X86/vector-trunc-ssat.ll b/llvm/test/CodeGen/X86/vector-trunc-ssat.ll --- a/llvm/test/CodeGen/X86/vector-trunc-ssat.ll +++ b/llvm/test/CodeGen/X86/vector-trunc-ssat.ll @@ -1508,7 +1508,7 @@ ; SSE41-NEXT: por %xmm3, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE41-NEXT: packssdw %xmm2, %xmm1 -; SSE41-NEXT: packssdw %xmm0, %xmm1 +; SSE41-NEXT: packssdw %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -1643,7 +1643,7 @@ ; SSE2-NEXT: pandn %xmm0, %xmm1 ; SSE2-NEXT: por %xmm3, %xmm1 ; SSE2-NEXT: packssdw %xmm6, %xmm1 -; SSE2-NEXT: packssdw %xmm0, %xmm1 +; SSE2-NEXT: packssdw %xmm1, %xmm1 ; SSE2-NEXT: movq %xmm1, (%rdi) ; SSE2-NEXT: retq ; @@ -1706,7 +1706,7 @@ ; SSSE3-NEXT: pandn %xmm0, %xmm1 ; SSSE3-NEXT: por %xmm3, %xmm1 ; SSSE3-NEXT: packssdw %xmm6, %xmm1 -; SSSE3-NEXT: packssdw %xmm0, %xmm1 +; SSSE3-NEXT: packssdw %xmm1, %xmm1 ; SSSE3-NEXT: movq %xmm1, (%rdi) ; SSSE3-NEXT: retq ; @@ -1756,7 +1756,7 @@ ; SSE41-NEXT: por %xmm3, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm5, %xmm1 ; SSE41-NEXT: packssdw %xmm2, %xmm1 -; SSE41-NEXT: packssdw %xmm0, %xmm1 +; SSE41-NEXT: packssdw %xmm1, %xmm1 ; SSE41-NEXT: movq %xmm1, (%rdi) ; SSE41-NEXT: retq ; @@ -2610,8 +2610,8 @@ ; SSE2-NEXT: por %xmm3, %xmm1 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 ; SSE2-NEXT: packuswb %xmm1, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movd %xmm1, %eax ; SSE2-NEXT: movw %ax, (%rdi) ; SSE2-NEXT: retq @@ -3590,7 +3590,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5 ; SSE41-NEXT: packssdw %xmm3, %xmm5 ; SSE41-NEXT: packssdw %xmm5, %xmm1 -; SSE41-NEXT: packsswb %xmm0, %xmm1 +; SSE41-NEXT: packsswb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -3791,7 +3791,7 @@ ; SSE2-NEXT: por %xmm1, %xmm2 ; SSE2-NEXT: packssdw %xmm4, %xmm2 ; SSE2-NEXT: packssdw %xmm2, %xmm6 -; SSE2-NEXT: packsswb %xmm0, %xmm6 +; SSE2-NEXT: packsswb %xmm6, %xmm6 ; SSE2-NEXT: movq %xmm6, (%rsi) ; SSE2-NEXT: retq ; @@ -3912,7 +3912,7 @@ ; SSSE3-NEXT: por %xmm1, %xmm2 ; SSSE3-NEXT: packssdw %xmm4, %xmm2 ; SSSE3-NEXT: packssdw %xmm2, %xmm6 -; SSSE3-NEXT: packsswb %xmm0, %xmm6 +; SSSE3-NEXT: packsswb %xmm6, %xmm6 ; SSSE3-NEXT: movq %xmm6, (%rsi) ; SSSE3-NEXT: retq ; @@ -4010,7 +4010,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm5 ; SSE41-NEXT: packssdw %xmm2, %xmm5 ; SSE41-NEXT: packssdw %xmm5, %xmm4 -; SSE41-NEXT: packsswb %xmm0, %xmm4 +; SSE41-NEXT: packsswb %xmm4, %xmm4 ; SSE41-NEXT: movq %xmm4, (%rsi) ; SSE41-NEXT: retq ; @@ -5024,8 +5024,8 @@ ; SSE2-NEXT: pandn %xmm0, %xmm1 ; SSE2-NEXT: por %xmm2, %xmm1 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 -; SSE2-NEXT: packuswb %xmm0, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 +; SSE2-NEXT: packuswb %xmm1, %xmm1 ; SSE2-NEXT: movd %xmm1, (%rdi) ; SSE2-NEXT: retq ; diff --git a/llvm/test/CodeGen/X86/vector-trunc-usat.ll b/llvm/test/CodeGen/X86/vector-trunc-usat.ll --- a/llvm/test/CodeGen/X86/vector-trunc-usat.ll +++ b/llvm/test/CodeGen/X86/vector-trunc-usat.ll @@ -1046,7 +1046,7 @@ ; SSE41-NEXT: por %xmm5, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm3, %xmm2 ; SSE41-NEXT: packusdw %xmm6, %xmm2 -; SSE41-NEXT: packusdw %xmm0, %xmm2 +; SSE41-NEXT: packusdw %xmm2, %xmm2 ; SSE41-NEXT: movdqa %xmm2, %xmm0 ; SSE41-NEXT: retq ; @@ -1221,7 +1221,7 @@ ; SSE41-NEXT: por %xmm5, %xmm0 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm3 ; SSE41-NEXT: packusdw %xmm6, %xmm3 -; SSE41-NEXT: packusdw %xmm0, %xmm3 +; SSE41-NEXT: packusdw %xmm3, %xmm3 ; SSE41-NEXT: movq %xmm3, (%rdi) ; SSE41-NEXT: retq ; @@ -2127,8 +2127,8 @@ ; SSE2-NEXT: por %xmm0, %xmm2 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm2 ; SSE2-NEXT: packuswb %xmm2, %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 ; SSE2-NEXT: movd %xmm2, %eax ; SSE2-NEXT: movw %ax, (%rdi) ; SSE2-NEXT: retq @@ -2431,8 +2431,8 @@ ; SSE2-NEXT: pand %xmm8, %xmm0 ; SSE2-NEXT: pand %xmm8, %xmm3 ; SSE2-NEXT: packuswb %xmm0, %xmm3 -; SSE2-NEXT: packuswb %xmm0, %xmm3 -; SSE2-NEXT: packuswb %xmm0, %xmm3 +; SSE2-NEXT: packuswb %xmm3, %xmm3 +; SSE2-NEXT: packuswb %xmm3, %xmm3 ; SSE2-NEXT: movd %xmm3, (%rdi) ; SSE2-NEXT: retq ; @@ -2767,7 +2767,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2 ; SSE41-NEXT: packusdw %xmm4, %xmm2 ; SSE41-NEXT: packusdw %xmm2, %xmm1 -; SSE41-NEXT: packuswb %xmm0, %xmm1 +; SSE41-NEXT: packuswb %xmm1, %xmm1 ; SSE41-NEXT: movdqa %xmm1, %xmm0 ; SSE41-NEXT: retq ; @@ -2903,7 +2903,7 @@ ; SSE2-NEXT: por %xmm9, %xmm0 ; SSE2-NEXT: packuswb %xmm3, %xmm0 ; SSE2-NEXT: packuswb %xmm0, %xmm5 -; SSE2-NEXT: packuswb %xmm0, %xmm5 +; SSE2-NEXT: packuswb %xmm5, %xmm5 ; SSE2-NEXT: movq %xmm5, (%rsi) ; SSE2-NEXT: retq ; @@ -2970,7 +2970,7 @@ ; SSSE3-NEXT: por %xmm9, %xmm0 ; SSSE3-NEXT: packuswb %xmm3, %xmm0 ; SSSE3-NEXT: packuswb %xmm0, %xmm5 -; SSSE3-NEXT: packuswb %xmm0, %xmm5 +; SSSE3-NEXT: packuswb %xmm5, %xmm5 ; SSSE3-NEXT: movq %xmm5, (%rsi) ; SSSE3-NEXT: retq ; @@ -3027,7 +3027,7 @@ ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm1 ; SSE41-NEXT: packusdw %xmm3, %xmm1 ; SSE41-NEXT: packusdw %xmm1, %xmm6 -; SSE41-NEXT: packuswb %xmm0, %xmm6 +; SSE41-NEXT: packuswb %xmm6, %xmm6 ; SSE41-NEXT: movq %xmm6, (%rsi) ; SSE41-NEXT: retq ; @@ -3698,8 +3698,8 @@ ; SSE2-NEXT: pandn {{.*}}(%rip), %xmm2 ; SSE2-NEXT: por %xmm0, %xmm2 ; SSE2-NEXT: pand {{.*}}(%rip), %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 -; SSE2-NEXT: packuswb %xmm0, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 +; SSE2-NEXT: packuswb %xmm2, %xmm2 ; SSE2-NEXT: movd %xmm2, (%rdi) ; SSE2-NEXT: retq ; @@ -3907,7 +3907,7 @@ ; SSE2-NEXT: pandn %xmm2, %xmm5 ; SSE2-NEXT: por %xmm0, %xmm5 ; SSE2-NEXT: packuswb %xmm6, %xmm5 -; SSE2-NEXT: packuswb %xmm0, %xmm5 +; SSE2-NEXT: packuswb %xmm5, %xmm5 ; SSE2-NEXT: movq %xmm5, (%rdi) ; SSE2-NEXT: retq ; @@ -3929,7 +3929,7 @@ ; SSSE3-NEXT: pandn %xmm2, %xmm5 ; SSSE3-NEXT: por %xmm0, %xmm5 ; SSSE3-NEXT: packuswb %xmm6, %xmm5 -; SSSE3-NEXT: packuswb %xmm0, %xmm5 +; SSSE3-NEXT: packuswb %xmm5, %xmm5 ; SSSE3-NEXT: movq %xmm5, (%rdi) ; SSSE3-NEXT: retq ;