diff options
author | joanlluch <joan.lluch@icloud.com> | 2019-11-08 23:16:44 +0100 |
---|---|---|
committer | joanlluch <joan.lluch@icloud.com> | 2019-11-08 23:16:44 +0100 |
commit | fe0763d28a572f72007637c7bd097bc19cbb58fc (patch) | |
tree | e94f41c0cb3c9d7eb1ed278a305466bbc05740e8 /llvm/lib/Target/MSP430 | |
parent | d0416b91f0390f6e69dacf3d5d076531221e0767 (diff) | |
download | bcm5719-llvm-fe0763d28a572f72007637c7bd097bc19cbb58fc.tar.gz bcm5719-llvm-fe0763d28a572f72007637c7bd097bc19cbb58fc.zip |
[TargetLowering][DAGCombine][MSP430] Shift Amount Threshold in DAGCombine (3) (baseline tests)
Summary:
This is baseline tests for D69326
Incorporates a command line flag for the MSP430 and adds a test cases to help showing the effects of applying D69326
More details and motivation for this patch in D69326
Reviewers: spatel, asl, lebedev.ri
Reviewed By: spatel, asl
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69975
Diffstat (limited to 'llvm/lib/Target/MSP430')
-rw-r--r-- | llvm/lib/Target/MSP430/MSP430ISelLowering.cpp | 14 | ||||
-rw-r--r-- | llvm/lib/Target/MSP430/MSP430ISelLowering.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp index 1ee5489f197..b6a658f30a8 100644 --- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp +++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -37,6 +37,11 @@ using namespace llvm; #define DEBUG_TYPE "msp430-lower" +static cl::opt<bool>MSP430NoLegalImmediate( + "msp430-no-legal-immediate", cl::Hidden, + cl::desc("Enable non legal immediates (for testing purposes only)"), + cl::init(false)); + MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM, const MSP430Subtarget &STI) : TargetLowering(TM) { @@ -357,6 +362,15 @@ SDValue MSP430TargetLowering::LowerOperation(SDValue Op, unsigned MSP430TargetLowering::getShiftAmountThreshold(EVT VT) const { return 2; } + +// Implemented to verify test case assertions in +// tests/codegen/msp430/shift-amount-threshold-b.ll +bool MSP430TargetLowering::isLegalICmpImmediate(int64_t Immed) const { + if (MSP430NoLegalImmediate) + return Immed >= -32 && Immed < 32; + return TargetLowering::isLegalICmpImmediate(Immed); +} + //===----------------------------------------------------------------------===// // MSP430 Inline Assembly Support //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.h b/llvm/lib/Target/MSP430/MSP430ISelLowering.h index 9224e5e3d00..64ddbbdf6c8 100644 --- a/llvm/lib/Target/MSP430/MSP430ISelLowering.h +++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.h @@ -124,6 +124,7 @@ namespace llvm { bool isZExtFree(EVT VT1, EVT VT2) const override; bool isZExtFree(SDValue Val, EVT VT2) const override; + bool isLegalICmpImmediate(int64_t) const override; unsigned getShiftAmountThreshold(EVT VT) const override; MachineBasicBlock * |