[llvm] [X86][AVX10] Allow AVX10 use VBMI2 instructions (PR #73276)

Evgenii Kudriashov via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 23 21:01:18 PST 2023


================
@@ -1970,20 +1970,24 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
     }
 
     if (Subtarget.hasVBMI2()) {
-      for (auto VT : { MVT::v8i16, MVT::v4i32, MVT::v2i64,
-                       MVT::v16i16, MVT::v8i32, MVT::v4i64,
-                       MVT::v32i16, MVT::v16i32, MVT::v8i64 }) {
+      for (auto VT : {MVT::v32i16, MVT::v16i32, MVT::v8i64}) {
         setOperationAction(ISD::FSHL, VT, Custom);
         setOperationAction(ISD::FSHR, VT, Custom);
       }
 
       setOperationAction(ISD::ROTL, MVT::v32i16, Custom);
-      setOperationAction(ISD::ROTR, MVT::v8i16,  Custom);
-      setOperationAction(ISD::ROTR, MVT::v16i16, Custom);
       setOperationAction(ISD::ROTR, MVT::v32i16, Custom);
     }
   }// useAVX512Regs
 
+  if (Subtarget.hasVBMI2()) {
----------------
e-kud wrote:

Now `setOperationAction` is called without `!Subtarget.useSoftFloat()`. I've just realized that we have this predicate on integer operations. I don't know the reasons why it is so. I assume it is used as a vector register availability predicate. If so, then we need it here as well

https://github.com/llvm/llvm-project/pull/73276


More information about the llvm-commits mailing list