]> granicus.if.org Git - llvm/commitdiff
[X86][AVX-512] Allow EVEX encoded instruction selection when available for mul v8i32.
authorIgor Breger <igor.breger@intel.com>
Thu, 4 May 2017 07:34:58 +0000 (07:34 +0000)
committerIgor Breger <igor.breger@intel.com>
Thu, 4 May 2017 07:34:58 +0000 (07:34 +0000)
Differential Revision: https://reviews.llvm.org/D32679

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302127 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/avx-isa-check.ll
test/CodeGen/X86/avx512vl-arith.ll

index 0ed2ab47cfe7d8c3073aa2588ff7b8b5233940b3..48da2fa607af0507faef7f0b17be1a6a44486e49 100644 (file)
@@ -6727,14 +6727,14 @@ let Predicates = [HasAVX] in
                                  loadv2i64, i128mem, 0, SSE_INTALU_ITINS_P>,
                                  VEX_4V, VEX_WIG;
 
-let Predicates = [HasAVX2] in {
+let Predicates = [HasAVX2, NoVLX] in
   defm VPMULLDY  : SS48I_binop_rm<0x40, "vpmulld", mul, v8i32, VR256,
                                   loadv4i64, i256mem, 0, SSE_PMULLD_ITINS>,
                                   VEX_4V, VEX_L, VEX_WIG;
+let Predicates = [HasAVX2] in
   defm VPCMPEQQY : SS48I_binop_rm<0x29, "vpcmpeqq", X86pcmpeq, v4i64, VR256,
                                   loadv4i64, i256mem, 0, SSE_INTALU_ITINS_P>,
                                   VEX_4V, VEX_L, VEX_WIG;
-}
 
 let Constraints = "$src1 = $dst" in {
   defm PMULLD  : SS48I_binop_rm<0x40, "pmulld", mul, v4i32, VR128,
index dffc8078e44f908fea7c55818aed0c8635c7dfdf..5d66dfde0bc67a087f7dc9049ff76a500b01c151 100644 (file)
@@ -680,3 +680,8 @@ define   <4 x double> @_inreg4xdouble(double %a) {
   %c = shufflevector <4 x double> %b, <4 x double> undef, <4 x i32> zeroinitializer
   ret <4 x double> %c
 }
+
+define <8 x i32> @test_mul_v8i32(<8 x i32> %arg1, <8 x i32> %arg2) #0 {
+  %ret = mul <8 x i32> %arg1, %arg2
+  ret <8 x i32> %ret
+}
index b7a7bebe1dfaf90bc47b715d1d40d085db91ad26..9c056cdee196692fdba5b734d35af64d0174d3fb 100755 (executable)
@@ -176,7 +176,7 @@ define <8 x i32> @vpsubd256_test(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
 define <8 x i32> @vpmulld256_test(<8 x i32> %i, <8 x i32> %j) {
 ; CHECK-LABEL: vpmulld256_test:
 ; CHECK:       ## BB#0:
-; CHECK-NEXT:    vpmulld %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x40,0xc1]
+; CHECK-NEXT:    vpmulld %ymm1, %ymm0, %ymm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x7d,0x40,0xc1]
 ; CHECK-NEXT:    retq ## encoding: [0xc3]
   %x = mul <8 x i32> %i, %j
   ret <8 x i32> %x