forked from OSchip/llvm-project
[RISCV] Cleanup setOperationAction calls for INTRINSIC_WO_CHAIN/INTRINSIC_W_CHAIN
We have several extensions that need i32 to be Custom for INTRINSIC_WO_CHAIN with RV64 so enable it for all RV64. For V extension, make i32 Custom for RV64 and i64 Custom for RV32. When the i32 or i64 is legal, the operation action doesn't matter. LegalizeDAG checks MVT::Other rather than the real type.
This commit is contained in:
parent
60ed86d350
commit
837442de9c
|
@ -188,12 +188,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
||||||
setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Expand);
|
setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Expand);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Subtarget.hasStdExtZbb() && Subtarget.is64Bit())
|
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
|
|
||||||
|
|
||||||
if (Subtarget.hasStdExtZbe() && Subtarget.is64Bit())
|
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
|
|
||||||
|
|
||||||
if (Subtarget.is64Bit()) {
|
if (Subtarget.is64Bit()) {
|
||||||
setOperationAction(ISD::ADD, MVT::i32, Custom);
|
setOperationAction(ISD::ADD, MVT::i32, Custom);
|
||||||
setOperationAction(ISD::SUB, MVT::i32, Custom);
|
setOperationAction(ISD::SUB, MVT::i32, Custom);
|
||||||
|
@ -262,7 +256,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
||||||
if (Subtarget.is64Bit()) {
|
if (Subtarget.is64Bit()) {
|
||||||
setOperationAction(ISD::BITREVERSE, MVT::i32, Custom);
|
setOperationAction(ISD::BITREVERSE, MVT::i32, Custom);
|
||||||
setOperationAction(ISD::BSWAP, MVT::i32, Custom);
|
setOperationAction(ISD::BSWAP, MVT::i32, Custom);
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// With Zbb we have an XLen rev8 instruction, but not GREVI. So we'll
|
// With Zbb we have an XLen rev8 instruction, but not GREVI. So we'll
|
||||||
|
@ -386,6 +379,8 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
||||||
setOperationAction(ISD::TRAP, MVT::Other, Legal);
|
setOperationAction(ISD::TRAP, MVT::Other, Legal);
|
||||||
setOperationAction(ISD::DEBUGTRAP, MVT::Other, Legal);
|
setOperationAction(ISD::DEBUGTRAP, MVT::Other, Legal);
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom);
|
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom);
|
||||||
|
if (Subtarget.is64Bit())
|
||||||
|
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
|
||||||
|
|
||||||
if (Subtarget.hasStdExtA()) {
|
if (Subtarget.hasStdExtA()) {
|
||||||
setMaxAtomicSizeInBitsSupported(Subtarget.getXLen());
|
setMaxAtomicSizeInBitsSupported(Subtarget.getXLen());
|
||||||
|
@ -407,10 +402,12 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i16, Custom);
|
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i16, Custom);
|
||||||
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i8, Custom);
|
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i8, Custom);
|
||||||
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i16, Custom);
|
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i16, Custom);
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i32, Custom);
|
if (Subtarget.is64Bit()) {
|
||||||
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i32, Custom);
|
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i32, Custom);
|
||||||
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i64, Custom);
|
} else {
|
||||||
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i64, Custom);
|
setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::i64, Custom);
|
||||||
|
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::i64, Custom);
|
||||||
|
}
|
||||||
|
|
||||||
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::Other, Custom);
|
setOperationAction(ISD::INTRINSIC_W_CHAIN, MVT::Other, Custom);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue