[llvm] r312880 - Revert "adding autoUpgrade support to broadcast[f|i]32x2 intrinsics"

Uriel Korach via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 10 02:07:21 PDT 2017


Author: uriel.k
Date: Sun Sep 10 02:07:21 2017
New Revision: 312880

URL: http://llvm.org/viewvc/llvm-project?rev=312880&view=rev
Log:
Revert "adding autoUpgrade support to broadcast[f|i]32x2 intrinsics"

This reverts commit r312879 - An accidental partial commit.

Modified:
    llvm/trunk/include/llvm/IR/IntrinsicsX86.td
    llvm/trunk/lib/IR/AutoUpgrade.cpp
    llvm/trunk/lib/Target/X86/X86IntrinsicsInfo.h

Modified: llvm/trunk/include/llvm/IR/IntrinsicsX86.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IntrinsicsX86.td?rev=312880&r1=312879&r2=312880&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/IntrinsicsX86.td (original)
+++ llvm/trunk/include/llvm/IR/IntrinsicsX86.td Sun Sep 10 02:07:21 2017
@@ -4414,6 +4414,26 @@ let TargetPrefix = "x86" in {  // All in
   def int_x86_avx512_vbroadcast_sd_512 :
         Intrinsic<[llvm_v8f64_ty], [llvm_ptr_ty], [IntrReadMem, IntrArgMemOnly]>;
 
+  def int_x86_avx512_mask_broadcastf32x2_256 :
+          Intrinsic<[llvm_v8f32_ty],
+                    [llvm_v4f32_ty, llvm_v8f32_ty, llvm_i8_ty], [IntrNoMem]>;
+
+  def int_x86_avx512_mask_broadcastf32x2_512 :
+          Intrinsic<[llvm_v16f32_ty],
+                    [llvm_v4f32_ty, llvm_v16f32_ty, llvm_i16_ty], [IntrNoMem]>;
+
+  def int_x86_avx512_mask_broadcasti32x2_128 :
+          Intrinsic<[llvm_v4i32_ty],
+                    [llvm_v4i32_ty, llvm_v4i32_ty, llvm_i8_ty], [IntrNoMem]>;
+
+  def int_x86_avx512_mask_broadcasti32x2_256 :
+          Intrinsic<[llvm_v8i32_ty],
+                    [llvm_v4i32_ty, llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
+
+  def int_x86_avx512_mask_broadcasti32x2_512 :
+          Intrinsic<[llvm_v16i32_ty],
+                    [llvm_v4i32_ty, llvm_v16i32_ty, llvm_i16_ty], [IntrNoMem]>;
+
    def int_x86_avx512_broadcastmw_512 :
           GCCBuiltin<"__builtin_ia32_broadcastmw512">,
           Intrinsic<[llvm_v16i32_ty], [llvm_i16_ty], [IntrNoMem]>;

Modified: llvm/trunk/lib/IR/AutoUpgrade.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AutoUpgrade.cpp?rev=312880&r1=312879&r2=312880&view=diff
==============================================================================
--- llvm/trunk/lib/IR/AutoUpgrade.cpp (original)
+++ llvm/trunk/lib/IR/AutoUpgrade.cpp Sun Sep 10 02:07:21 2017
@@ -72,9 +72,7 @@ static bool ShouldUpgradeX86Intrinsic(Fu
   // like to use this information to remove upgrade code for some older
   // intrinsics. It is currently undecided how we will determine that future
   // point.
-  if (Name.startswith("avx512.mask.broadcastf32x2") || // Added in 6.0
-      Name.startswith("avx512.mask.broadcasti32x2") || // Added in 6.0
-      Name.startswith("sse2.pcmpeq.") || // Added in 3.1
+  if (Name.startswith("sse2.pcmpeq.") || // Added in 3.1
       Name.startswith("sse2.pcmpgt.") || // Added in 3.1
       Name.startswith("avx2.pcmpeq.") || // Added in 3.1
       Name.startswith("avx2.pcmpgt.") || // Added in 3.1
@@ -805,20 +803,6 @@ static Value *upgradeIntMinMax(IRBuilder
   return Res;
 }
 
-static Value *upgradeBroadcastf32x2(IRBuilder<> &Builder, CallInst &CI) {
-  Value *Op0 = CI.getArgOperand(0);
-  Value *RetArg = CI.getReturnedArgOperand();
-
-  llvm::VectorType *Ty = RetArg->getType();
-  unsigned NumElts = Ty->getVectorNumElements();
-  uint32_t Indices[NumElts];
-  for(unsigned i = 0; i < NumElts; ++i)
-    Indices[i] = i % 2;
-
-  Value *Res = Builder.CreateShuffleVector(Op0,UndefValue::get(Ty),Indices);
-  return EmitX86Select(Builder, CI.getArgOperand(2), Res, CI.getArgOperand(1));
-}
-
 static Value *upgradeMaskedCompare(IRBuilder<> &Builder, CallInst &CI,
                                    unsigned CC, bool Signed) {
   Value *Op0 = CI.getArgOperand(0);
@@ -1075,9 +1059,6 @@ void llvm::UpgradeIntrinsicCall(CallInst
                          Name.startswith("avx2.pmaxs") ||
                          Name.startswith("avx512.mask.pmaxs"))) {
       Rep = upgradeIntMinMax(Builder, *CI, ICmpInst::ICMP_SGT);
-    } else if (IsX86 && (Name.startswith("avx512.mask.broadcastf32x2") ||
-                         Name.startswith("avx512.mask.broadcasti32x2"))) {
-        Rep =upgradeBroadcastf32x2(Builder, *CI);
     } else if (IsX86 && (Name == "sse2.pmaxu.b" ||
                          Name == "sse41.pmaxuw" ||
                          Name == "sse41.pmaxud" ||

Modified: llvm/trunk/lib/Target/X86/X86IntrinsicsInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86IntrinsicsInfo.h?rev=312880&r1=312879&r2=312880&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86IntrinsicsInfo.h (original)
+++ llvm/trunk/lib/Target/X86/X86IntrinsicsInfo.h Sun Sep 10 02:07:21 2017
@@ -478,6 +478,16 @@ static const IntrinsicData  IntrinsicsWi
                      X86ISD::FADDS_RND, 0),
   X86_INTRINSIC_DATA(avx512_mask_add_ss_round, INTR_TYPE_SCALAR_MASK_RM,
                      X86ISD::FADDS_RND, 0),
+  X86_INTRINSIC_DATA(avx512_mask_broadcastf32x2_256, BRCST32x2_TO_VEC,
+                     X86ISD::VBROADCAST, 0),
+  X86_INTRINSIC_DATA(avx512_mask_broadcastf32x2_512, BRCST32x2_TO_VEC,
+                     X86ISD::VBROADCAST, 0),
+  X86_INTRINSIC_DATA(avx512_mask_broadcasti32x2_128, BRCST32x2_TO_VEC,
+                     X86ISD::VBROADCAST, 0),
+  X86_INTRINSIC_DATA(avx512_mask_broadcasti32x2_256, BRCST32x2_TO_VEC,
+                     X86ISD::VBROADCAST, 0),
+  X86_INTRINSIC_DATA(avx512_mask_broadcasti32x2_512, BRCST32x2_TO_VEC,
+                     X86ISD::VBROADCAST, 0),
   X86_INTRINSIC_DATA(avx512_mask_cmp_pd_128, CMP_MASK_CC, X86ISD::CMPM, 0),
   X86_INTRINSIC_DATA(avx512_mask_cmp_pd_256, CMP_MASK_CC, X86ISD::CMPM, 0),
   X86_INTRINSIC_DATA(avx512_mask_cmp_pd_512, CMP_MASK_CC, X86ISD::CMPM,




More information about the llvm-commits mailing list