Skip to content

Commit 624a2c7

Browse files
committed
fixup! override rd in fillMemoryOperands
1 parent aba68de commit 624a2c7

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

llvm/test/tools/llvm-exegesis/RISCV/latency-by-extension-C.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,5 @@ C_LDSP: ---
5353
C_LDSP-NEXT: mode: latency
5454
C_LDSP-NEXT: key:
5555
C_LDSP-NEXT: instructions:
56-
C_LDSP-NEXT: - 'C_LDSP [[REG111:X[0-9]+]] X2 [[IMM11:i_0x[0-9]+]]'
56+
C_LDSP-NEXT: - 'C_LDSP X2 X2 [[IMM11:i_0x[0-9]+]]'
5757
C_LDSP-DAG: ...

llvm/tools/llvm-exegesis/lib/RISCV/Target.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,7 @@ void ExegesisRISCVTarget::fillMemoryOperands(InstructionTemplate &IT,
823823
if (Opcode == RISCV::C_LDSP || Opcode == RISCV::C_LWSP ||
824824
Opcode == RISCV::C_SDSP || Opcode == RISCV::C_SWSP) {
825825
// Force base register to SP (X2)
826+
IT.getValueFor(I.Operands[0]) = MCOperand::createReg(RISCV::X2);
826827
IT.getValueFor(MemOp) = MCOperand::createReg(RISCV::X2);
827828
return;
828829
}

llvm/tools/llvm-exegesis/lib/SerialSnippetGenerator.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,12 @@ static void appendCodeTemplates(const LLVMState &State,
142142
return;
143143

144144
ET.fillMemoryOperands(Variant, ScratchMemoryRegister, 0);
145-
Variant.getValueFor(DefOp) = MCOperand::createReg(ScratchMemoryRegister);
145+
146+
// Only force the def register to ScratchMemoryRegister if the target
147+
// hasn't assigned a value yet.
148+
MCOperand &DefVal = Variant.getValueFor(DefOp);
149+
if (!DefVal.isValid())
150+
DefVal = MCOperand::createReg(ScratchMemoryRegister);
146151

147152
CodeTemplate CT;
148153
CT.Execution = ExecutionModeBit;

0 commit comments

Comments
 (0)