mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Enable targets to say that integer divide is expensive, which will trigger
an upcoming optimization in the DAG Combiner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23834 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d97591a961
commit
d32d4a93f6
@ -83,6 +83,10 @@ public:
|
||||
/// isSetCCExpensive - Return true if the setcc operation is expensive for
|
||||
/// this target.
|
||||
bool isSetCCExpensive() const { return SetCCIsExpensive; }
|
||||
|
||||
/// isIntDivExpensive() - Return true if integer divide is more expensive than
|
||||
/// a sequence of several shifts, adds, and multiplies for this target.
|
||||
bool isIntDivExpensive() const { return IntDivIsExpensive; }
|
||||
|
||||
/// getSetCCResultTy - Return the ValueType of the result of setcc operations.
|
||||
///
|
||||
@ -262,6 +266,11 @@ protected:
|
||||
/// setcc operations into other operations if possible.
|
||||
void setSetCCIsExpensive() { SetCCIsExpensive = true; }
|
||||
|
||||
/// setIntDivIsExpensive - Tells the code generator that integer divide is
|
||||
/// expensive, and if possible, should be replaced by an alternate sequence
|
||||
/// of instructions not containing an integer divide.
|
||||
void setIntDivIsExpensive() { IntDivIsExpensive = true; }
|
||||
|
||||
/// addRegisterClass - Add the specified register class as an available
|
||||
/// regclass for the specified value type. This indicates the selector can
|
||||
/// handle values of that class natively.
|
||||
@ -391,6 +400,13 @@ private:
|
||||
/// setcc operations into other operations if possible.
|
||||
bool SetCCIsExpensive;
|
||||
|
||||
/// IntDivIsExpensive - This is a hack until a real costs model is in place
|
||||
/// that tells the code generator whether integer divide will always be more
|
||||
/// expensive than a sequence of multiplies, shifts, and adds that performs
|
||||
/// the same operation. If we ever optimize for size, this will be set to
|
||||
/// false unconditionally.
|
||||
bool IntDivIsExpensive;
|
||||
|
||||
/// SetCCResultTy - The type that SetCC operations use. This defaults to the
|
||||
/// PointerTy.
|
||||
MVT::ValueType SetCCResultTy;
|
||||
|
Loading…
x
Reference in New Issue
Block a user