Index: llvm/lib/Target/X86/X86InstrInfo.cpp =================================================================== --- llvm/lib/Target/X86/X86InstrInfo.cpp +++ llvm/lib/Target/X86/X86InstrInfo.cpp @@ -7449,6 +7449,11 @@ case X86::VPBLENDWYrmi: case X86::VPBLENDWYrri: return SetBlendDomain(16, true); + case X86::VPXORYrm: + case X86::VPXORYrr: + case X86::VXORPSYrm: + case X86::VXORPSYrr: + return SetBlendDomain(14, true); case X86::VPANDDZ128rr: case X86::VPANDDZ128rm: case X86::VPANDDZ256rr: case X86::VPANDDZ256rm: case X86::VPANDQZ128rr: case X86::VPANDQZ128rm: Index: llvm/test/CodeGen/X86/avx-logic.ll =================================================================== --- llvm/test/CodeGen/X86/avx-logic.ll +++ llvm/test/CodeGen/X86/avx-logic.ll @@ -62,12 +62,19 @@ } define <4 x double> @xorpd256(<4 x double> %y, <4 x double> %x) nounwind uwtable readnone ssp { -; ANY-LABEL: xorpd256: -; ANY: # %bb.0: # %entry -; ANY-NEXT: vxorpd %ymm0, %ymm1, %ymm0 -; ANY-NEXT: vxorpd %xmm1, %xmm1, %xmm1 -; ANY-NEXT: vaddpd %ymm1, %ymm0, %ymm0 -; ANY-NEXT: retq +; AVX1-LABEL: xorpd256: +; AVX1: # %bb.0: # %entry +; AVX1-NEXT: vxorps %ymm0, %ymm1, %ymm0 +; AVX1-NEXT: vxorpd %xmm1, %xmm1, %xmm1 +; AVX1-NEXT: vaddpd %ymm1, %ymm0, %ymm0 +; AVX1-NEXT: retq +; +; INT256-LABEL: xorpd256: +; INT256: # %bb.0: # %entry +; INT256-NEXT: vpxor %ymm0, %ymm1, %ymm0 +; INT256-NEXT: vxorpd %xmm1, %xmm1, %xmm1 +; INT256-NEXT: vaddpd %ymm1, %ymm0, %ymm0 +; INT256-NEXT: retq entry: %0 = bitcast <4 x double> %x to <4 x i64> %1 = bitcast <4 x double> %y to <4 x i64> @@ -79,12 +86,19 @@ } define <4 x double> @xorpd256fold(<4 x double> %y) nounwind uwtable readnone ssp { -; ANY-LABEL: xorpd256fold: -; ANY: # %bb.0: # %entry -; ANY-NEXT: vxorpd {{.*}}(%rip), %ymm0, %ymm0 -; ANY-NEXT: vxorpd %xmm1, %xmm1, %xmm1 -; ANY-NEXT: vaddpd %ymm1, %ymm0, %ymm0 -; ANY-NEXT: retq +; AVX1-LABEL: xorpd256fold: +; AVX1: # %bb.0: # %entry +; AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 +; AVX1-NEXT: vxorpd %xmm1, %xmm1, %xmm1 +; AVX1-NEXT: vaddpd %ymm1, %ymm0, %ymm0 +; AVX1-NEXT: retq +; +; INT256-LABEL: xorpd256fold: +; INT256: # %bb.0: # %entry +; INT256-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0 +; INT256-NEXT: vxorpd %xmm1, %xmm1, %xmm1 +; INT256-NEXT: vaddpd %ymm1, %ymm0, %ymm0 +; INT256-NEXT: retq entry: %0 = bitcast <4 x double> %y to <4 x i64> %xor.i = xor <4 x i64> %0, @@ -95,10 +109,15 @@ } define <8 x float> @xorps256(<8 x float> %y, <8 x float> %x) nounwind uwtable readnone ssp { -; ANY-LABEL: xorps256: -; ANY: # %bb.0: # %entry -; ANY-NEXT: vxorps %ymm0, %ymm1, %ymm0 -; ANY-NEXT: retq +; AVX1-LABEL: xorps256: +; AVX1: # %bb.0: # %entry +; AVX1-NEXT: vxorps %ymm0, %ymm1, %ymm0 +; AVX1-NEXT: retq +; +; INT256-LABEL: xorps256: +; INT256: # %bb.0: # %entry +; INT256-NEXT: vpxor %ymm0, %ymm1, %ymm0 +; INT256-NEXT: retq entry: %0 = bitcast <8 x float> %x to <8 x i32> %1 = bitcast <8 x float> %y to <8 x i32> @@ -108,10 +127,15 @@ } define <8 x float> @xorps256fold(<8 x float> %y) nounwind uwtable readnone ssp { -; ANY-LABEL: xorps256fold: -; ANY: # %bb.0: # %entry -; ANY-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 -; ANY-NEXT: retq +; AVX1-LABEL: xorps256fold: +; AVX1: # %bb.0: # %entry +; AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 +; AVX1-NEXT: retq +; +; INT256-LABEL: xorps256fold: +; INT256: # %bb.0: # %entry +; INT256-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0 +; INT256-NEXT: retq entry: %0 = bitcast <8 x float> %y to <8 x i32> %xor.i = xor <8 x i32> %0, Index: llvm/test/CodeGen/X86/avx2-intrinsics-fast-isel.ll =================================================================== --- llvm/test/CodeGen/X86/avx2-intrinsics-fast-isel.ll +++ llvm/test/CodeGen/X86/avx2-intrinsics-fast-isel.ll @@ -2642,7 +2642,7 @@ define <4 x i64> @test_mm256_xor_si256(<4 x i64> %a0, <4 x i64> %a1) nounwind { ; CHECK-LABEL: test_mm256_xor_si256: ; CHECK: # %bb.0: -; CHECK-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; CHECK-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; CHECK-NEXT: ret{{[l|q]}} %res = xor <4 x i64> %a0, %a1 ret <4 x i64> %res Index: llvm/test/CodeGen/X86/avx512-arith.ll =================================================================== --- llvm/test/CodeGen/X86/avx512-arith.ll +++ llvm/test/CodeGen/X86/avx512-arith.ll @@ -1064,7 +1064,7 @@ ; AVX512F-LABEL: test_fxor_8f32: ; AVX512F: # %bb.0: ; AVX512F-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; AVX512F-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; AVX512F-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; AVX512F-NEXT: retq ; ; AVX512VL-LABEL: test_fxor_8f32: @@ -1075,13 +1075,13 @@ ; AVX512BW-LABEL: test_fxor_8f32: ; AVX512BW: # %bb.0: ; AVX512BW-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; AVX512BW-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; AVX512BW-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; AVX512BW-NEXT: retq ; ; AVX512DQ-LABEL: test_fxor_8f32: ; AVX512DQ: # %bb.0: ; AVX512DQ-NEXT: vbroadcastss {{.*#+}} ymm1 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; AVX512DQ-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; AVX512DQ-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; AVX512DQ-NEXT: retq ; ; SKX-LABEL: test_fxor_8f32: Index: llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll =================================================================== --- llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll +++ llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll @@ -517,15 +517,25 @@ ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq ; -; AVX12-LABEL: v8f32_xor: -; AVX12: # %bb.0: -; AVX12-NEXT: vcmpltps %ymm2, %ymm3, %ymm2 -; AVX12-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 -; AVX12-NEXT: vxorps %ymm2, %ymm0, %ymm0 -; AVX12-NEXT: vmovmskps %ymm0, %eax -; AVX12-NEXT: # kill: def $al killed $al killed $eax -; AVX12-NEXT: vzeroupper -; AVX12-NEXT: retq +; AVX1-LABEL: v8f32_xor: +; AVX1: # %bb.0: +; AVX1-NEXT: vcmpltps %ymm2, %ymm3, %ymm2 +; AVX1-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 +; AVX1-NEXT: vxorps %ymm2, %ymm0, %ymm0 +; AVX1-NEXT: vmovmskps %ymm0, %eax +; AVX1-NEXT: # kill: def $al killed $al killed $eax +; AVX1-NEXT: vzeroupper +; AVX1-NEXT: retq +; +; AVX2-LABEL: v8f32_xor: +; AVX2: # %bb.0: +; AVX2-NEXT: vcmpltps %ymm2, %ymm3, %ymm2 +; AVX2-NEXT: vcmpltps %ymm0, %ymm1, %ymm0 +; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm0 +; AVX2-NEXT: vmovmskps %ymm0, %eax +; AVX2-NEXT: # kill: def $al killed $al killed $eax +; AVX2-NEXT: vzeroupper +; AVX2-NEXT: retq ; ; AVX512F-LABEL: v8f32_xor: ; AVX512F: # %bb.0: @@ -582,17 +592,29 @@ ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax ; SSE2-SSSE3-NEXT: retq ; -; AVX12-LABEL: v8f32_xor_and: -; AVX12: # %bb.0: -; AVX12-NEXT: vcmpeq_uqps %ymm3, %ymm2, %ymm2 -; AVX12-NEXT: vcmpnleps %ymm1, %ymm0, %ymm0 -; AVX12-NEXT: vxorps %ymm2, %ymm0, %ymm0 -; AVX12-NEXT: vcmpltps %ymm4, %ymm5, %ymm1 -; AVX12-NEXT: vandps %ymm1, %ymm0, %ymm0 -; AVX12-NEXT: vmovmskps %ymm0, %eax -; AVX12-NEXT: # kill: def $al killed $al killed $eax -; AVX12-NEXT: vzeroupper -; AVX12-NEXT: retq +; AVX1-LABEL: v8f32_xor_and: +; AVX1: # %bb.0: +; AVX1-NEXT: vcmpeq_uqps %ymm3, %ymm2, %ymm2 +; AVX1-NEXT: vcmpnleps %ymm1, %ymm0, %ymm0 +; AVX1-NEXT: vxorps %ymm2, %ymm0, %ymm0 +; AVX1-NEXT: vcmpltps %ymm4, %ymm5, %ymm1 +; AVX1-NEXT: vandps %ymm1, %ymm0, %ymm0 +; AVX1-NEXT: vmovmskps %ymm0, %eax +; AVX1-NEXT: # kill: def $al killed $al killed $eax +; AVX1-NEXT: vzeroupper +; AVX1-NEXT: retq +; +; AVX2-LABEL: v8f32_xor_and: +; AVX2: # %bb.0: +; AVX2-NEXT: vcmpeq_uqps %ymm3, %ymm2, %ymm2 +; AVX2-NEXT: vcmpnleps %ymm1, %ymm0, %ymm0 +; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm0 +; AVX2-NEXT: vcmpltps %ymm4, %ymm5, %ymm1 +; AVX2-NEXT: vandps %ymm1, %ymm0, %ymm0 +; AVX2-NEXT: vmovmskps %ymm0, %eax +; AVX2-NEXT: # kill: def $al killed $al killed $eax +; AVX2-NEXT: vzeroupper +; AVX2-NEXT: retq ; ; AVX512F-LABEL: v8f32_xor_and: ; AVX512F: # %bb.0: Index: llvm/test/CodeGen/X86/fma-intrinsics-fast-isel.ll =================================================================== --- llvm/test/CodeGen/X86/fma-intrinsics-fast-isel.ll +++ llvm/test/CodeGen/X86/fma-intrinsics-fast-isel.ll @@ -306,7 +306,7 @@ define <4 x double> @test_mm256_fmsub_pd(<4 x double> %a, <4 x double> %b, <4 x double> %c) { ; CHECK-LABEL: test_mm256_fmsub_pd: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vxorpd {{.*}}(%rip), %ymm2, %ymm2 +; CHECK-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2 ; CHECK-NEXT: vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 ; CHECK-NEXT: retq entry: @@ -330,7 +330,7 @@ define <4 x double> @test_mm256_fnmadd_pd(<4 x double> %a, <4 x double> %b, <4 x double> %c) { ; CHECK-LABEL: test_mm256_fnmadd_pd: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vxorpd {{.*}}(%rip), %ymm0, %ymm0 +; CHECK-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 ; CHECK-NEXT: vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 ; CHECK-NEXT: retq entry: @@ -358,8 +358,8 @@ ; CHECK-LABEL: test_mm256_fnmsub_pd: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vmovapd {{.*#+}} ymm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; CHECK-NEXT: vxorpd %ymm3, %ymm0, %ymm4 -; CHECK-NEXT: vxorpd %ymm3, %ymm2, %ymm0 +; CHECK-NEXT: vxorps %ymm3, %ymm0, %ymm4 +; CHECK-NEXT: vxorps %ymm3, %ymm2, %ymm0 ; CHECK-NEXT: vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm4) + ymm0 ; CHECK-NEXT: retq entry: Index: llvm/test/CodeGen/X86/fma_patterns.ll =================================================================== --- llvm/test/CodeGen/X86/fma_patterns.ll +++ llvm/test/CodeGen/X86/fma_patterns.ll @@ -1775,13 +1775,13 @@ ; FMA-LABEL: test_v4f64_fneg_fmul_no_nsz: ; FMA: # %bb.0: ; FMA-NEXT: vmulpd %ymm1, %ymm0, %ymm0 -; FMA-NEXT: vxorpd {{.*}}(%rip), %ymm0, %ymm0 +; FMA-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 ; FMA-NEXT: retq ; ; FMA4-LABEL: test_v4f64_fneg_fmul_no_nsz: ; FMA4: # %bb.0: ; FMA4-NEXT: vmulpd %ymm1, %ymm0, %ymm0 -; FMA4-NEXT: vxorpd {{.*}}(%rip), %ymm0, %ymm0 +; FMA4-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 ; FMA4-NEXT: retq ; ; AVX512-LABEL: test_v4f64_fneg_fmul_no_nsz: Index: llvm/test/CodeGen/X86/fma_patterns_wide.ll =================================================================== --- llvm/test/CodeGen/X86/fma_patterns_wide.ll +++ llvm/test/CodeGen/X86/fma_patterns_wide.ll @@ -1144,8 +1144,8 @@ ; FMA-NEXT: vmulpd %ymm3, %ymm1, %ymm1 ; FMA-NEXT: vmulpd %ymm2, %ymm0, %ymm0 ; FMA-NEXT: vmovapd {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; FMA-NEXT: vxorpd %ymm2, %ymm0, %ymm0 -; FMA-NEXT: vxorpd %ymm2, %ymm1, %ymm1 +; FMA-NEXT: vxorps %ymm2, %ymm0, %ymm0 +; FMA-NEXT: vxorps %ymm2, %ymm1, %ymm1 ; FMA-NEXT: retq ; ; FMA4-LABEL: test_v8f64_fneg_fmul_no_nsz: @@ -1153,8 +1153,8 @@ ; FMA4-NEXT: vmulpd %ymm3, %ymm1, %ymm1 ; FMA4-NEXT: vmulpd %ymm2, %ymm0, %ymm0 ; FMA4-NEXT: vmovapd {{.*#+}} ymm2 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0] -; FMA4-NEXT: vxorpd %ymm2, %ymm0, %ymm0 -; FMA4-NEXT: vxorpd %ymm2, %ymm1, %ymm1 +; FMA4-NEXT: vxorps %ymm2, %ymm0, %ymm0 +; FMA4-NEXT: vxorps %ymm2, %ymm1, %ymm1 ; FMA4-NEXT: retq ; ; AVX512-LABEL: test_v8f64_fneg_fmul_no_nsz: Index: llvm/test/CodeGen/X86/machine-combiner-int-vec.ll =================================================================== --- llvm/test/CodeGen/X86/machine-combiner-int-vec.ll +++ llvm/test/CodeGen/X86/machine-combiner-int-vec.ll @@ -1090,7 +1090,7 @@ ; AVX2-NEXT: vpxor %ymm1, %ymm0, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm4, %ymm4 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm1, %ymm0, %ymm2 +; AVX2-NEXT: vpxor %ymm1, %ymm0, %ymm2 ; AVX2-NEXT: vpxor %ymm1, %ymm3, %ymm1 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm1, %ymm1 ; AVX2-NEXT: vblendvpd %ymm1, %ymm3, %ymm0, %ymm0 @@ -1502,7 +1502,7 @@ ; AVX2-NEXT: vpxor %ymm1, %ymm0, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm4, %ymm5, %ymm4 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm1, %ymm0, %ymm2 +; AVX2-NEXT: vpxor %ymm1, %ymm0, %ymm2 ; AVX2-NEXT: vpxor %ymm1, %ymm3, %ymm1 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm2, %ymm1 ; AVX2-NEXT: vblendvpd %ymm1, %ymm3, %ymm0, %ymm0 @@ -2094,11 +2094,11 @@ ; AVX2-NEXT: vpxor %ymm3, %ymm0, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm2, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm4, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm3, %ymm0, %ymm2 +; AVX2-NEXT: vpxor %ymm3, %ymm0, %ymm2 ; AVX2-NEXT: vpxor %ymm3, %ymm6, %ymm4 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm4, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm6, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm3, %ymm1, %ymm2 +; AVX2-NEXT: vpxor %ymm3, %ymm1, %ymm2 ; AVX2-NEXT: vpxor %ymm3, %ymm7, %ymm3 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm7, %ymm1, %ymm1 @@ -2856,11 +2856,11 @@ ; AVX2-NEXT: vpxor %ymm3, %ymm0, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm5, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm4, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm3, %ymm0, %ymm2 +; AVX2-NEXT: vpxor %ymm3, %ymm0, %ymm2 ; AVX2-NEXT: vpxor %ymm3, %ymm6, %ymm4 ; AVX2-NEXT: vpcmpgtq %ymm4, %ymm2, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm6, %ymm0, %ymm0 -; AVX2-NEXT: vxorpd %ymm3, %ymm1, %ymm2 +; AVX2-NEXT: vpxor %ymm3, %ymm1, %ymm2 ; AVX2-NEXT: vpxor %ymm3, %ymm7, %ymm3 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm7, %ymm1, %ymm1 Index: llvm/test/CodeGen/X86/promote-cmp.ll =================================================================== --- llvm/test/CodeGen/X86/promote-cmp.ll +++ llvm/test/CodeGen/X86/promote-cmp.ll @@ -72,7 +72,7 @@ ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2 ; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm3 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2 -; AVX1-NEXT: vxorpd {{.*}}(%rip), %ymm2, %ymm2 +; AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2 ; AVX1-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0 ; AVX1-NEXT: retq ; Index: llvm/test/CodeGen/X86/sadd_sat_vec.ll =================================================================== --- llvm/test/CodeGen/X86/sadd_sat_vec.ll +++ llvm/test/CodeGen/X86/sadd_sat_vec.ll @@ -1530,7 +1530,7 @@ ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm3, %xmm2 ; AVX1-NEXT: vpcmpgtq %xmm4, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 -; AVX1-NEXT: vxorpd %ymm0, %ymm1, %ymm0 +; AVX1-NEXT: vxorps %ymm0, %ymm1, %ymm0 ; AVX1-NEXT: vblendvpd %ymm0, %ymm6, %ymm5, %ymm0 ; AVX1-NEXT: retq ; @@ -1889,7 +1889,7 @@ ; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4 ; AVX1-NEXT: vpcmpgtq %xmm6, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 -; AVX1-NEXT: vxorpd %ymm0, %ymm2, %ymm0 +; AVX1-NEXT: vxorps %ymm0, %ymm2, %ymm0 ; AVX1-NEXT: vblendvpd %ymm0, %ymm10, %ymm7, %ymm0 ; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm2 ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4 @@ -1900,7 +1900,7 @@ ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm4, %xmm2 ; AVX1-NEXT: vpcmpgtq %xmm5, %xmm1, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1 -; AVX1-NEXT: vxorpd %ymm1, %ymm3, %ymm1 +; AVX1-NEXT: vxorps %ymm1, %ymm3, %ymm1 ; AVX1-NEXT: vblendvpd %ymm1, %ymm7, %ymm6, %ymm1 ; AVX1-NEXT: retq ; Index: llvm/test/CodeGen/X86/ssub_sat_vec.ll =================================================================== --- llvm/test/CodeGen/X86/ssub_sat_vec.ll +++ llvm/test/CodeGen/X86/ssub_sat_vec.ll @@ -1639,7 +1639,7 @@ ; AVX1-NEXT: vpsubq %xmm1, %xmm0, %xmm1 ; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm0 -; AVX1-NEXT: vxorpd %ymm0, %ymm3, %ymm0 +; AVX1-NEXT: vxorps %ymm0, %ymm3, %ymm0 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm1, %ymm1 ; AVX1-NEXT: vmovapd {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808] ; AVX1-NEXT: vblendvpd %ymm1, {{.*}}(%rip), %ymm2, %ymm2 @@ -2084,7 +2084,7 @@ ; AVX1-NEXT: vpsubq %xmm2, %xmm0, %xmm2 ; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm0 ; AVX1-NEXT: vinsertf128 $1, %xmm7, %ymm0, %ymm0 -; AVX1-NEXT: vxorpd %ymm0, %ymm6, %ymm0 +; AVX1-NEXT: vxorps %ymm0, %ymm6, %ymm0 ; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm2, %ymm2 ; AVX1-NEXT: vmovapd {{.*#+}} ymm4 = [9223372036854775807,9223372036854775807,9223372036854775807,9223372036854775807] ; AVX1-NEXT: vmovapd {{.*#+}} ymm6 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808] @@ -2100,7 +2100,7 @@ ; AVX1-NEXT: vpsubq %xmm3, %xmm1, %xmm3 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm1 ; AVX1-NEXT: vinsertf128 $1, %xmm7, %ymm1, %ymm1 -; AVX1-NEXT: vxorpd %ymm1, %ymm5, %ymm1 +; AVX1-NEXT: vxorps %ymm1, %ymm5, %ymm1 ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm3, %ymm2 ; AVX1-NEXT: vblendvpd %ymm2, %ymm4, %ymm6, %ymm3 ; AVX1-NEXT: vblendvpd %ymm1, %ymm3, %ymm2, %ymm1 Index: llvm/test/CodeGen/X86/stack-folding-fp-avx1.ll =================================================================== --- llvm/test/CodeGen/X86/stack-folding-fp-avx1.ll +++ llvm/test/CodeGen/X86/stack-folding-fp-avx1.ll @@ -3577,7 +3577,7 @@ ; CHECK-NEXT: #APP ; CHECK-NEXT: nop ; CHECK-NEXT: #NO_APP -; CHECK-NEXT: vxorpd {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload +; CHECK-NEXT: vxorps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload ; CHECK-NEXT: vxorpd %xmm1, %xmm1, %xmm1 ; CHECK-NEXT: vaddpd %ymm1, %ymm0, %ymm0 ; CHECK-NEXT: retq Index: llvm/test/CodeGen/X86/v8i1-masks.ll =================================================================== --- llvm/test/CodeGen/X86/v8i1-masks.ll +++ llvm/test/CodeGen/X86/v8i1-masks.ll @@ -893,7 +893,7 @@ ; X32-AVX2-NEXT: vcmpleps %ymm0, %ymm1, %ymm1 ; X32-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0] ; X32-AVX2-NEXT: vcmpltps %ymm2, %ymm0, %ymm2 -; X32-AVX2-NEXT: vxorps %ymm2, %ymm1, %ymm1 +; X32-AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1 ; X32-AVX2-NEXT: vxorps %xmm2, %xmm2, %xmm2 ; X32-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm2 ; X32-AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1] @@ -908,7 +908,7 @@ ; X64-AVX2-NEXT: vcmpleps %ymm0, %ymm1, %ymm1 ; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0] ; X64-AVX2-NEXT: vcmpltps %ymm2, %ymm0, %ymm2 -; X64-AVX2-NEXT: vxorps %ymm2, %ymm1, %ymm1 +; X64-AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1 ; X64-AVX2-NEXT: vxorps %xmm2, %xmm2, %xmm2 ; X64-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm2 ; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1] @@ -972,8 +972,8 @@ ; X32-AVX2-NEXT: vbroadcastss {{.*#+}} ymm5 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1] ; X32-AVX2-NEXT: vcmpneqps %ymm5, %ymm0, %ymm0 ; X32-AVX2-NEXT: vandps %ymm0, %ymm4, %ymm0 -; X32-AVX2-NEXT: vxorps %ymm0, %ymm3, %ymm0 -; X32-AVX2-NEXT: vxorps %ymm0, %ymm2, %ymm0 +; X32-AVX2-NEXT: vpxor %ymm0, %ymm3, %ymm0 +; X32-AVX2-NEXT: vpxor %ymm0, %ymm2, %ymm0 ; X32-AVX2-NEXT: vorps %ymm1, %ymm0, %ymm0 ; X32-AVX2-NEXT: retl ; @@ -990,8 +990,8 @@ ; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm5 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1] ; X64-AVX2-NEXT: vcmpneqps %ymm5, %ymm0, %ymm0 ; X64-AVX2-NEXT: vandps %ymm0, %ymm4, %ymm0 -; X64-AVX2-NEXT: vxorps %ymm0, %ymm3, %ymm0 -; X64-AVX2-NEXT: vxorps %ymm0, %ymm2, %ymm0 +; X64-AVX2-NEXT: vpxor %ymm0, %ymm3, %ymm0 +; X64-AVX2-NEXT: vpxor %ymm0, %ymm2, %ymm0 ; X64-AVX2-NEXT: vorps %ymm1, %ymm0, %ymm0 ; X64-AVX2-NEXT: retq entry: @@ -1054,10 +1054,10 @@ ; X32-AVX2-NEXT: vcmpneqps %ymm4, %ymm0, %ymm4 ; X32-AVX2-NEXT: vandps %ymm4, %ymm3, %ymm3 ; X32-AVX2-NEXT: vandps %ymm3, %ymm2, %ymm2 -; X32-AVX2-NEXT: vxorps %ymm2, %ymm1, %ymm1 +; X32-AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1 ; X32-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1] ; X32-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm2 -; X32-AVX2-NEXT: vxorps %ymm1, %ymm2, %ymm1 +; X32-AVX2-NEXT: vpxor %ymm1, %ymm2, %ymm1 ; X32-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1] ; X32-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm0 ; X32-AVX2-NEXT: vorps %ymm0, %ymm1, %ymm0 @@ -1075,10 +1075,10 @@ ; X64-AVX2-NEXT: vcmpneqps %ymm4, %ymm0, %ymm4 ; X64-AVX2-NEXT: vandps %ymm4, %ymm3, %ymm3 ; X64-AVX2-NEXT: vandps %ymm3, %ymm2, %ymm2 -; X64-AVX2-NEXT: vxorps %ymm2, %ymm1, %ymm1 +; X64-AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1 ; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1] ; X64-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm2 -; X64-AVX2-NEXT: vxorps %ymm1, %ymm2, %ymm1 +; X64-AVX2-NEXT: vpxor %ymm1, %ymm2, %ymm1 ; X64-AVX2-NEXT: vbroadcastss {{.*#+}} ymm2 = [4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1] ; X64-AVX2-NEXT: vcmpneqps %ymm2, %ymm0, %ymm0 ; X64-AVX2-NEXT: vorps %ymm0, %ymm1, %ymm0 Index: llvm/test/CodeGen/X86/vec_fp_to_int.ll =================================================================== --- llvm/test/CodeGen/X86/vec_fp_to_int.ll +++ llvm/test/CodeGen/X86/vec_fp_to_int.ll @@ -1549,7 +1549,7 @@ ; AVX2-NEXT: vsubps %ymm1, %ymm0, %ymm1 ; AVX2-NEXT: vcvttps2dq %ymm1, %ymm1 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648,2147483648] -; AVX2-NEXT: vxorps %ymm3, %ymm1, %ymm1 +; AVX2-NEXT: vpxor %ymm3, %ymm1, %ymm1 ; AVX2-NEXT: vcvttps2dq %ymm0, %ymm0 ; AVX2-NEXT: vblendvps %ymm2, %ymm0, %ymm1, %ymm0 ; AVX2-NEXT: retq Index: llvm/test/CodeGen/X86/vector-partial-undef.ll =================================================================== --- llvm/test/CodeGen/X86/vector-partial-undef.ll +++ llvm/test/CodeGen/X86/vector-partial-undef.ll @@ -153,7 +153,7 @@ ; AVX: # %bb.0: ; AVX-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0 -; AVX-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0 +; AVX-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0 ; AVX-NEXT: vmovaps {{.*#+}} ymm1 = [6,1,5,4,3,2,0,7] ; AVX-NEXT: vpermps %ymm0, %ymm1, %ymm0 ; AVX-NEXT: retq Index: llvm/test/CodeGen/X86/vector-reduce-umax.ll =================================================================== --- llvm/test/CodeGen/X86/vector-reduce-umax.ll +++ llvm/test/CodeGen/X86/vector-reduce-umax.ll @@ -789,8 +789,8 @@ ; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm5, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm3, %ymm1 -; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm2 -; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm3 +; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm2 +; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm3 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0 ; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 Index: llvm/test/CodeGen/X86/vector-reduce-umin.ll =================================================================== --- llvm/test/CodeGen/X86/vector-reduce-umin.ll +++ llvm/test/CodeGen/X86/vector-reduce-umin.ll @@ -793,8 +793,8 @@ ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm5 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm5, %ymm3 ; AVX2-NEXT: vblendvpd %ymm3, %ymm0, %ymm2, %ymm0 -; AVX2-NEXT: vxorpd %ymm4, %ymm0, %ymm2 -; AVX2-NEXT: vxorpd %ymm4, %ymm1, %ymm3 +; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm2 +; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm3 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm3, %ymm2 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0 ; AVX2-NEXT: vextractf128 $1, %ymm0, %xmm1 Index: llvm/test/CodeGen/X86/vector-trunc-math.ll =================================================================== --- llvm/test/CodeGen/X86/vector-trunc-math.ll +++ llvm/test/CodeGen/X86/vector-trunc-math.ll @@ -3546,7 +3546,7 @@ ; ; AVX2-SLOW-LABEL: trunc_xor_v4i64_v4i32: ; AVX2-SLOW: # %bb.0: -; AVX2-SLOW-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; AVX2-SLOW-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; AVX2-SLOW-NEXT: vextractf128 $1, %ymm0, %xmm1 ; AVX2-SLOW-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,2],xmm1[0,2] ; AVX2-SLOW-NEXT: vzeroupper @@ -3554,7 +3554,7 @@ ; ; AVX2-FAST-LABEL: trunc_xor_v4i64_v4i32: ; AVX2-FAST: # %bb.0: -; AVX2-FAST-NEXT: vxorps %ymm1, %ymm0, %ymm0 +; AVX2-FAST-NEXT: vpxor %ymm1, %ymm0, %ymm0 ; AVX2-FAST-NEXT: vmovaps {{.*#+}} ymm1 = <0,2,4,6,u,u,u,u> ; AVX2-FAST-NEXT: vpermps %ymm0, %ymm1, %ymm0 ; AVX2-FAST-NEXT: # kill: def $xmm0 killed $xmm0 killed $ymm0 @@ -3610,8 +3610,8 @@ ; ; AVX2-SLOW-LABEL: trunc_xor_v8i64_v8i16: ; AVX2-SLOW: # %bb.0: -; AVX2-SLOW-NEXT: vxorps %ymm3, %ymm1, %ymm1 -; AVX2-SLOW-NEXT: vxorps %ymm2, %ymm0, %ymm0 +; AVX2-SLOW-NEXT: vpxor %ymm3, %ymm1, %ymm1 +; AVX2-SLOW-NEXT: vpxor %ymm2, %ymm0, %ymm0 ; AVX2-SLOW-NEXT: vperm2f128 {{.*#+}} ymm2 = ymm0[2,3],ymm1[2,3] ; AVX2-SLOW-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; AVX2-SLOW-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,2],ymm2[0,2],ymm0[4,6],ymm2[4,6] @@ -3746,10 +3746,10 @@ ; ; AVX2-SLOW-LABEL: trunc_xor_v16i64_v16i8: ; AVX2-SLOW: # %bb.0: -; AVX2-SLOW-NEXT: vxorps %ymm5, %ymm1, %ymm1 -; AVX2-SLOW-NEXT: vxorps %ymm4, %ymm0, %ymm0 -; AVX2-SLOW-NEXT: vxorps %ymm7, %ymm3, %ymm3 -; AVX2-SLOW-NEXT: vxorps %ymm6, %ymm2, %ymm2 +; AVX2-SLOW-NEXT: vpxor %ymm5, %ymm1, %ymm1 +; AVX2-SLOW-NEXT: vpxor %ymm4, %ymm0, %ymm0 +; AVX2-SLOW-NEXT: vpxor %ymm7, %ymm3, %ymm3 +; AVX2-SLOW-NEXT: vpxor %ymm6, %ymm2, %ymm2 ; AVX2-SLOW-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm2[2,3],ymm3[2,3] ; AVX2-SLOW-NEXT: vinsertf128 $1, %xmm3, %ymm2, %ymm2 ; AVX2-SLOW-NEXT: vshufps {{.*#+}} ymm2 = ymm2[0,2],ymm4[0,2],ymm2[4,6],ymm4[4,6]