[RISCV] Only custom legalize i32 arguments to vector intrinsics on RV64.
authorCraig Topper <craig.topper@sifive.com>
Tue, 15 Dec 2020 21:34:04 +0000 (13:34 -0800)
committerCraig Topper <craig.topper@sifive.com>
Tue, 15 Dec 2020 21:54:41 +0000 (13:54 -0800)
llvm/lib/Target/RISCV/RISCVISelLowering.cpp

index 529a5bf..c0202e3 100644 (file)
@@ -340,9 +340,12 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
 
   if (Subtarget.hasStdExtV()) {
     setBooleanVectorContents(ZeroOrOneBooleanContent);
+
     // RVV intrinsics may have illegal operands.
-    for (auto VT : {MVT::i8, MVT::i16, MVT::i32})
-      setOperationAction(ISD::INTRINSIC_WO_CHAIN, VT, Custom);
+    setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i8, Custom);
+    setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i16, Custom);
+    if (Subtarget.is64Bit())
+      setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
   }
 
   // Function alignments.