[llvm] [AMDGPU] Enable copy from VCC to SHARED_BASE. (PR #164138)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 18 18:43:56 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: None (carlobertolli)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/164138.diff
2 Files Affected:
- (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.cpp (+8)
- (modified) llvm/test/CodeGen/AMDGPU/sgpr-phys-copy.mir (+9)
``````````diff
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 50447f48a628c..d1556cccf9524 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -845,6 +845,14 @@ void SIInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
}
}
+ if (AMDGPU::APERTURE_ClassRegClass.contains(DestReg)) {
+ if (SrcReg == AMDGPU::VCC) {
+ BuildMI(MBB, MI, DL, get(AMDGPU::S_MOV_B64), DestReg)
+ .addReg(SrcReg, getKillRegState(KillSrc));
+ return;
+ }
+ }
+
if (RC == &AMDGPU::VGPR_32RegClass) {
assert(AMDGPU::VGPR_32RegClass.contains(SrcReg) ||
AMDGPU::SReg_32RegClass.contains(SrcReg) ||
diff --git a/llvm/test/CodeGen/AMDGPU/sgpr-phys-copy.mir b/llvm/test/CodeGen/AMDGPU/sgpr-phys-copy.mir
index f11fe4aa6e00e..78e8788c7f0f0 100644
--- a/llvm/test/CodeGen/AMDGPU/sgpr-phys-copy.mir
+++ b/llvm/test/CodeGen/AMDGPU/sgpr-phys-copy.mir
@@ -67,6 +67,15 @@ body: |
$vcc = COPY $src_shared_base
...
+---
+name: vcc_to_src_shared_base
+body: |
+ bb.0:
+ ; GFX9-LABEL: name: vcc_to_src_shared_base
+ ; GFX9: $src_shared_base = S_MOV_B64 $vcc
+ $src_shared_base = COPY $vcc
+...
+
---
name: sgpr96_aligned_src_dst
body: |
``````````
</details>
https://github.com/llvm/llvm-project/pull/164138
More information about the llvm-commits
mailing list