Skip to content

Commit a3c810a

Browse files
committed
Implement getMemScale/getOffsetScale using MCInst flags coming from tablegen.
There are well over 1000 load and store opcodes. It is near impossible to maintain them all by hand in a switch statement.
1 parent 482df8b commit a3c810a

File tree

6 files changed

+374
-211
lines changed

6 files changed

+374
-211
lines changed

bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
309309
if (OffsetOpIdx == -1 || !Inst.getOperand(OffsetOpIdx).isImm())
310310
return Res;
311311
int64_t Offset = Inst.getOperand(OffsetOpIdx).getImm() *
312-
AArch64InstrInfo::getMemScale(Opc);
312+
AArch64MCInstrInfo::getOffsetScale(*Info, Opc);
313313
Res.IsPreIndexOffsetChange = AArch64MCInstrInfo::isPreLdStOpcode(*Info, Opc);
314314
Res.FromReg = Res.ToReg = Inst.getOperand(BaseOpIdx).getReg();
315315
Res.MaxOffsetChange = Res.OffsetChange = Offset;
@@ -394,7 +394,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
394394
if (OffsetOpIdx == -1 || !Inst.getOperand(OffsetOpIdx).isImm())
395395
return false;
396396
int64_t Offset = Inst.getOperand(OffsetOpIdx).getImm() *
397-
AArch64InstrInfo::getMemScale(Opc);
397+
AArch64MCInstrInfo::getOffsetScale(*Info, Opc);
398398
if (AArch64MCInstrInfo::isPostLdStOpcode(*Info, Opc))
399399
StackOffset = 0;
400400
else

0 commit comments

Comments
 (0)