[llvm] 76a15e5 - [RISCV] Keep all the setOperationActions for the same types and opcodes together.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 14:49:06 PDT 2024
Author: Craig Topper
Date: 2024-07-30T14:48:10-07:00
New Revision: 76a15e5fc1af921de229190f3ca6189fcdd28277
URL: https://github.com/llvm/llvm-project/commit/76a15e5fc1af921de229190f3ca6189fcdd28277
DIFF: https://github.com/llvm/llvm-project/commit/76a15e5fc1af921de229190f3ca6189fcdd28277.diff
LOG: [RISCV] Keep all the setOperationActions for the same types and opcodes together.
Some of XCV subtarget checks were in their own area.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index f312aed34b8a7..96edd331eb678 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -273,7 +273,8 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setOperationAction(ISD::EH_DWARF_CFA, MVT::i32, Custom);
- if (!Subtarget.hasStdExtZbb() && !Subtarget.hasVendorXTHeadBb())
+ if (!Subtarget.hasStdExtZbb() && !Subtarget.hasVendorXTHeadBb() &&
+ !(Subtarget.hasVendorXCValu() && !Subtarget.is64Bit()))
setOperationAction(ISD::SIGN_EXTEND_INREG, {MVT::i8, MVT::i16}, Expand);
if (Subtarget.is64Bit()) {
@@ -374,20 +375,24 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
Subtarget.hasStdExtZbkb() ? Custom : Expand);
}
- if (Subtarget.hasStdExtZbb()) {
+ if (Subtarget.hasStdExtZbb() ||
+ (Subtarget.hasVendorXCValu() && !Subtarget.is64Bit())) {
setOperationAction({ISD::SMIN, ISD::SMAX, ISD::UMIN, ISD::UMAX}, XLenVT,
Legal);
if (RV64LegalI32 && Subtarget.is64Bit())
setOperationAction({ISD::SMIN, ISD::SMAX, ISD::UMIN, ISD::UMAX}, MVT::i32,
Promote);
+ }
+ if (Subtarget.hasStdExtZbb() ||
+ (Subtarget.hasVendorXCVbitmanip() && !Subtarget.is64Bit())) {
if (Subtarget.is64Bit()) {
if (RV64LegalI32)
setOperationAction(ISD::CTTZ, MVT::i32, Legal);
else
setOperationAction({ISD::CTTZ, ISD::CTTZ_ZERO_UNDEF}, MVT::i32, Custom);
}
- } else if (!(Subtarget.hasVendorXCVbitmanip() && !Subtarget.is64Bit())) {
+ } else {
setOperationAction({ISD::CTTZ, ISD::CTPOP}, XLenVT, Expand);
if (RV64LegalI32 && Subtarget.is64Bit())
setOperationAction({ISD::CTTZ, ISD::CTPOP}, MVT::i32, Expand);
@@ -412,13 +417,17 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setOperationAction(ISD::CTLZ, MVT::i32, Expand);
}
- if (!RV64LegalI32 && Subtarget.is64Bit() &&
- !Subtarget.hasShortForwardBranchOpt())
- setOperationAction(ISD::ABS, MVT::i32, Custom);
-
- // We can use PseudoCCSUB to implement ABS.
- if (Subtarget.hasShortForwardBranchOpt())
+ if (Subtarget.hasVendorXCValu() && !Subtarget.is64Bit()) {
setOperationAction(ISD::ABS, XLenVT, Legal);
+ } else {
+ if (!RV64LegalI32 && Subtarget.is64Bit() &&
+ !Subtarget.hasShortForwardBranchOpt())
+ setOperationAction(ISD::ABS, MVT::i32, Custom);
+
+ // We can use PseudoCCSUB to implement ABS.
+ if (Subtarget.hasShortForwardBranchOpt())
+ setOperationAction(ISD::ABS, XLenVT, Legal);
+ }
if (!Subtarget.hasVendorXTHeadCondMov()) {
setOperationAction(ISD::SELECT, XLenVT, Custom);
@@ -1449,16 +1458,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setIndexedStoreAction(ISD::POST_INC, MVT::i32, Legal);
}
- if (Subtarget.hasVendorXCValu() && !Subtarget.is64Bit()) {
- setOperationAction(ISD::ABS, XLenVT, Legal);
- setOperationAction(ISD::SMIN, XLenVT, Legal);
- setOperationAction(ISD::UMIN, XLenVT, Legal);
- setOperationAction(ISD::SMAX, XLenVT, Legal);
- setOperationAction(ISD::UMAX, XLenVT, Legal);
- setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i8, Legal);
- setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Legal);
- }
-
// Function alignments.
const Align FunctionAlignment(Subtarget.hasStdExtCOrZca() ? 2 : 4);
setMinFunctionAlignment(FunctionAlignment);
More information about the llvm-commits
mailing list