mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-27 07:12:06 +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
|
/// isSetCCExpensive - Return true if the setcc operation is expensive for
|
||||||
/// this target.
|
/// this target.
|
||||||
bool isSetCCExpensive() const { return SetCCIsExpensive; }
|
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.
|
/// getSetCCResultTy - Return the ValueType of the result of setcc operations.
|
||||||
///
|
///
|
||||||
@ -262,6 +266,11 @@ protected:
|
|||||||
/// setcc operations into other operations if possible.
|
/// setcc operations into other operations if possible.
|
||||||
void setSetCCIsExpensive() { SetCCIsExpensive = true; }
|
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
|
/// addRegisterClass - Add the specified register class as an available
|
||||||
/// regclass for the specified value type. This indicates the selector can
|
/// regclass for the specified value type. This indicates the selector can
|
||||||
/// handle values of that class natively.
|
/// handle values of that class natively.
|
||||||
@ -391,6 +400,13 @@ private:
|
|||||||
/// setcc operations into other operations if possible.
|
/// setcc operations into other operations if possible.
|
||||||
bool SetCCIsExpensive;
|
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
|
/// SetCCResultTy - The type that SetCC operations use. This defaults to the
|
||||||
/// PointerTy.
|
/// PointerTy.
|
||||||
MVT::ValueType SetCCResultTy;
|
MVT::ValueType SetCCResultTy;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user