mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
[PowerPC/BlockPlacement] Allow target to provide a per-loop alignment preference
The existing code provided for specifying a global loop alignment preference. However, the preferred loop alignment might depend on the loop itself. For recent POWER cores, loops between 5 and 8 instructions should have 32-byte alignment (while the others are better with 16-byte alignment) so that the entire loop will fit in one i-cache line. To support this, getPrefLoopAlignment has been made virtual, and can be provided with an optional MachineLoop* so the target can inspect the loop before answering the query. The default behavior, as before, is to return the value set with setPrefLoopAlignment. MachineBlockPlacement now queries the target for each loop instead of only once per function. There should be no functional change for other targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225117 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -51,6 +51,7 @@ namespace llvm {
|
||||
class MachineFunction;
|
||||
class MachineInstr;
|
||||
class MachineJumpTableInfo;
|
||||
class MachineLoop;
|
||||
class Mangler;
|
||||
class MCContext;
|
||||
class MCExpr;
|
||||
@@ -929,7 +930,7 @@ public:
|
||||
}
|
||||
|
||||
/// Return the preferred loop alignment.
|
||||
unsigned getPrefLoopAlignment() const {
|
||||
virtual unsigned getPrefLoopAlignment(MachineLoop *ML = nullptr) const {
|
||||
return PrefLoopAlignment;
|
||||
}
|
||||
|
||||
@@ -1336,7 +1337,8 @@ protected:
|
||||
|
||||
/// Set the target's preferred loop alignment. Default alignment is zero, it
|
||||
/// means the target does not care about loop alignment. The alignment is
|
||||
/// specified in log2(bytes).
|
||||
/// specified in log2(bytes). The target may also override
|
||||
/// getPrefLoopAlignment to provide per-loop values.
|
||||
void setPrefLoopAlignment(unsigned Align) {
|
||||
PrefLoopAlignment = Align;
|
||||
}
|
||||
|
Reference in New Issue
Block a user