[llvm] 20dfe05 - [RISCV] Move the $rs operand of PseudoStore from outs to ins. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 8 16:08:07 PDT 2021
Author: Craig Topper
Date: 2021-08-08T15:58:24-07:00
New Revision: 20dfe051abe021b5be412385406c32bc1a296322
URL: https://github.com/llvm/llvm-project/commit/20dfe051abe021b5be412385406c32bc1a296322
DIFF: https://github.com/llvm/llvm-project/commit/20dfe051abe021b5be412385406c32bc1a296322.diff
LOG: [RISCV] Move the $rs operand of PseudoStore from outs to ins. NFC
This is the data to be stored so it should be an input.
To keep operand order similar between loads and stores, move the temp
register to the first dest operand of floating point loads. Rework
the assembler code accordingly.
This doesn't have any functional effect because this Pseudo is only
used by the assembler which doesn't use ins/outs.
Reviewed By: luismarques
Differential Revision: https://reviews.llvm.org/D107309
Added:
Modified:
llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
llvm/lib/Target/RISCV/RISCVInstrFormats.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
index 87496e0b9330f..b2683d575e14d 100644
--- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
@@ -2339,10 +2339,10 @@ void RISCVAsmParser::emitLoadStoreSymbol(MCInst &Inst, unsigned Opcode,
//
// TmpLabel: AUIPC tmp, %pcrel_hi(symbol)
// [S|L]X rd, %pcrel_lo(TmpLabel)(tmp)
- MCOperand DestReg = Inst.getOperand(0);
+ unsigned DestRegOpIdx = HasTmpReg ? 1 : 0;
+ MCOperand DestReg = Inst.getOperand(DestRegOpIdx);
unsigned SymbolOpIdx = HasTmpReg ? 2 : 1;
- unsigned TmpRegOpIdx = HasTmpReg ? 1 : 0;
- MCOperand TmpReg = Inst.getOperand(TmpRegOpIdx);
+ MCOperand TmpReg = Inst.getOperand(0);
const MCExpr *Symbol = Inst.getOperand(SymbolOpIdx).getExpr();
emitAuipcInstPair(DestReg, TmpReg, Symbol, RISCVMCExpr::VK_RISCV_PCREL_HI,
Opcode, IDLoc, Out);
diff --git a/llvm/lib/Target/RISCV/RISCVInstrFormats.td b/llvm/lib/Target/RISCV/RISCVInstrFormats.td
index bfd998dd2132a..8c198989d634d 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrFormats.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrFormats.td
@@ -202,7 +202,7 @@ class PseudoLoad<string opcodestr, RegisterClass rdty = GPR>
}
class PseudoFloatLoad<string opcodestr, RegisterClass rdty = GPR>
- : Pseudo<(outs rdty:$rd, GPR:$tmp), (ins bare_symbol:$addr), [], opcodestr, "$rd, $addr, $tmp"> {
+ : Pseudo<(outs GPR:$tmp, rdty:$rd), (ins bare_symbol:$addr), [], opcodestr, "$rd, $addr, $tmp"> {
let hasSideEffects = 0;
let mayLoad = 1;
let mayStore = 0;
@@ -212,7 +212,7 @@ class PseudoFloatLoad<string opcodestr, RegisterClass rdty = GPR>
// Pseudo store instructions.
class PseudoStore<string opcodestr, RegisterClass rsty = GPR>
- : Pseudo<(outs rsty:$rs, GPR:$tmp), (ins bare_symbol:$addr), [], opcodestr, "$rs, $addr, $tmp"> {
+ : Pseudo<(outs GPR:$tmp), (ins rsty:$rs, bare_symbol:$addr), [], opcodestr, "$rs, $addr, $tmp"> {
let hasSideEffects = 0;
let mayLoad = 0;
let mayStore = 1;
More information about the llvm-commits
mailing list