Skip to content

Commit ed6a91f

Browse files
committed
[ARM][SchedModels] Convert IsLdstsoScaledPred to MCSchedPredicate
Differential revision: https://reviews.llvm.org/D89939
1 parent 2692978 commit ed6a91f

File tree

6 files changed

+9
-17
lines changed

6 files changed

+9
-17
lines changed

llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -626,13 +626,6 @@ bool ARMBaseInstrInfo::isAddrMode3OpMinusReg(const MachineInstr &MI,
626626
return (isSub && Offset.getReg() != 0);
627627
}
628628

629-
bool ARMBaseInstrInfo::isLdstScaledReg(const MachineInstr &MI,
630-
unsigned Op) const {
631-
const MachineOperand &Opc = MI.getOperand(Op + 2);
632-
unsigned OffImm = Opc.getImm();
633-
return ARM_AM::getAM2ShiftOpc(OffImm) != ARM_AM::no_shift;
634-
}
635-
636629
// Load, scaled register offset, not plus LSL2
637630
bool ARMBaseInstrInfo::isLdstScaledRegNotPlusLsl2(const MachineInstr &MI,
638631
unsigned Op) const {

llvm/lib/Target/ARM/ARMBaseInstrInfo.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,6 @@ class ARMBaseInstrInfo : public ARMGenInstrInfo {
180180
static bool isCPSRDefined(const MachineInstr &MI);
181181
bool isAddrMode3OpMinusReg(const MachineInstr &MI, unsigned Op) const;
182182

183-
// Load, scaled register offset
184-
bool isLdstScaledReg(const MachineInstr &MI, unsigned Op) const;
185183
// Load, scaled register offset, not plus LSL2
186184
bool isLdstScaledRegNotPlusLsl2(const MachineInstr &MI, unsigned Op) const;
187185
// Minus reg for ldstso addr mode

llvm/lib/Target/ARM/ARMSchedule.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ def IsCPSRDefined : CheckFunctionPredicateWithTII<
164164

165165
def IsCPSRDefinedPred : MCSchedPredicate<IsCPSRDefined>;
166166

167+
let FunctionMapper = "ARM_AM::getAM2ShiftOpc" in {
168+
def CheckExtNoShift : CheckImmOperand_s<4, "ARM_AM::no_shift">;
169+
}
170+
167171
//===----------------------------------------------------------------------===//
168172
// Instruction Itinerary classes used for ARM
169173
//

llvm/lib/Target/ARM/ARMScheduleA57.td

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,7 @@ def IsLdstsoScaledNotOptimalPred :
4949
def IsLdstsoScaledNotOptimalPredX2 :
5050
SchedPredicate<[{TII->isLdstScaledRegNotPlusLsl2(*MI, 2)}]>;
5151

52-
// Load, scaled register offset
53-
def IsLdstsoScaledPred :
54-
SchedPredicate<[{TII->isLdstScaledReg(*MI, 1)}]>;
55-
def IsLdstsoScaledPredX2 :
56-
SchedPredicate<[{TII->isLdstScaledReg(*MI, 2)}]>;
52+
def IsLdstsoScaledPredX2 : MCSchedPredicate<CheckNot<CheckExtNoShift>>;
5753

5854
def IsLdstsoMinusRegPredX0 :
5955
SchedPredicate<[{TII->isLdstSoMinusReg(*MI, 0)}]>;

llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include "ARMMCTargetDesc.h"
14+
#include "ARMAddressingModes.h"
1415
#include "ARMBaseInfo.h"
1516
#include "ARMInstPrinter.h"
1617
#include "ARMMCAsmInfo.h"

llvm/test/tools/llvm-mca/ARM/cortex-a57-memory-instructions.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@
261261
# CHECK-NEXT: 1 1 1.00 * str r9, [r6, r3]
262262
# CHECK-NEXT: 1 1 1.00 * str r8, [r0, -r2]
263263
# CHECK-NEXT: 2 1 1.00 * str r7, [r1, r6]!
264-
# CHECK-NEXT: 2 1 1.00 * str r7, [r1, r6, lsl #2]!
264+
# CHECK-NEXT: 2 2 1.00 * str r7, [r1, r6, lsl #2]!
265265
# CHECK-NEXT: 2 1 1.00 * str r6, [sp, -r1]!
266266
# CHECK-NEXT: 2 2 1.00 * str r5, [r3], r9
267267
# CHECK-NEXT: 2 2 1.00 * str r4, [r2], -r5
@@ -321,7 +321,7 @@
321321

322322
# CHECK: Resource pressure per iteration:
323323
# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6]
324-
# CHECK-NEXT: - 44.50 44.50 284.00 8.00 55.00 - -
324+
# CHECK-NEXT: - 44.00 44.00 284.00 9.00 55.00 - -
325325

326326
# CHECK: Resource pressure by instruction:
327327
# CHECK-NEXT: [0] [1.0] [1.1] [2] [3] [4] [5] [6] Instructions:
@@ -426,7 +426,7 @@
426426
# CHECK-NEXT: - - - - - 1.00 - - str r9, [r6, r3]
427427
# CHECK-NEXT: - - - - - 1.00 - - str r8, [r0, -r2]
428428
# CHECK-NEXT: - 0.50 0.50 - - 1.00 - - str r7, [r1, r6]!
429-
# CHECK-NEXT: - 0.50 0.50 - - 1.00 - - str r7, [r1, r6, lsl #2]!
429+
# CHECK-NEXT: - - - - 1.00 1.00 - - str r7, [r1, r6, lsl #2]!
430430
# CHECK-NEXT: - 0.50 0.50 - - 1.00 - - str r6, [sp, -r1]!
431431
# CHECK-NEXT: - - - - 1.00 1.00 - - str r5, [r3], r9
432432
# CHECK-NEXT: - - - - 1.00 1.00 - - str r4, [r2], -r5

0 commit comments

Comments
 (0)