[llvm] AMDGPU: Start using AV_MOV_B64_IMM_PSEUDO (PR #154500)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 21 20:16:47 PDT 2025
================
@@ -2133,6 +2134,25 @@ bool SIInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
get(IsAGPR ? AMDGPU::V_ACCVGPR_WRITE_B32_e64 : AMDGPU::V_MOV_B32_e32));
break;
}
+ case AMDGPU::AV_MOV_B64_IMM_PSEUDO: {
+ Register Dst = MI.getOperand(0).getReg();
+ if (SIRegisterInfo::isAGPRClass(RI.getPhysRegBaseClass(Dst))) {
+ uint64_t Imm = static_cast<uint64_t>(MI.getOperand(1).getImm());
+
+ Register DstLo = RI.getSubReg(Dst, AMDGPU::sub0);
+ Register DstHi = RI.getSubReg(Dst, AMDGPU::sub1);
+ BuildMI(MBB, MI, DL, get(AMDGPU::V_ACCVGPR_WRITE_B32_e64), DstLo)
+ .addImm(SignExtend64<32>(Lo_32(Imm)))
+ .addReg(Dst, RegState::Implicit | RegState::Define);
+ BuildMI(MBB, MI, DL, get(AMDGPU::V_ACCVGPR_WRITE_B32_e64), DstHi)
+ .addImm(SignExtend64<32>(Hi_32(Imm)))
----------------
arsenm wrote:
```suggestion
BuildMI(MBB, MI, DL, get(AMDGPU::V_ACCVGPR_WRITE_B32_e64), DstLo)
.addImm(SignExtend64<32>(Imm))
.addReg(Dst, RegState::Implicit | RegState::Define);
BuildMI(MBB, MI, DL, get(AMDGPU::V_ACCVGPR_WRITE_B32_e64), DstHi)
.addImm(SignExtend64<32>(Imm >> 32))
```
https://github.com/llvm/llvm-project/pull/154500
More information about the llvm-commits
mailing list