Issue |
139102
|
Summary |
[AMDGPU] Bundling in SIInsertHardClauses can break physical register liveness
|
Labels |
backend:AMDGPU
|
Assignees |
|
Reporter |
jayfoad
|
With this [test case](https://github.com/user-attachments/files/20105970/r.txt) I get:
```
# After SI Insert Hard Clauses
# Machine code for function clause_implicit_def: IsSSA, NoPHIs, TracksLiveness, NoVRegs
bb.0:
liveins: $vgpr0, $sgpr32
BUNDLE implicit-def $vgpr2, implicit-def $vgpr2_lo16, implicit-def $vgpr2_hi16, implicit-def $vgpr3, implicit-def $vgpr3_lo16, implicit-def $vgpr3_hi16, implicit $vgpr0, implicit $sgpr32, implicit $exec, implicit $flat_scr, implicit $vgpr2_vgpr3 {
S_CLAUSE 1
SCRATCH_STORE_DWORD_SADDR $vgpr0, $sgpr32, 8, 0, implicit $exec, implicit $flat_scr
$vgpr2 = IMPLICIT_DEF
$vgpr3 = IMPLICIT_DEF
SCRATCH_STORE_DWORDX2_SADDR $vgpr2_vgpr3, $sgpr32, 16, 0, implicit $exec, implicit $flat_scr
}
# End machine code for function clause_implicit_def.
*** Bad machine code: Using an undefined physical register ***
- function: clause_implicit_def
- basic block: %bb.0 (0x2a2d18a8)
- instruction: BUNDLE implicit-def $vgpr2, implicit-def $vgpr2_lo16, implicit-def $vgpr2_hi16, implicit-def $vgpr3, implicit-def $vgpr3_lo16, implicit-def $vgpr3_hi16, implicit $vgpr0, implicit $sgpr32, implicit $exec, implicit $flat_scr, implicit $vgpr2_vgpr3
- operand 10: implicit $vgpr2_vgpr3
*** Bad machine code: Using an undefined physical register ***
- function: clause_implicit_def
- basic block: %bb.0 (0x2a2d18a8)
- instruction: SCRATCH_STORE_DWORDX2_SADDR $vgpr2_vgpr3, $sgpr32, 16, 0, implicit $exec, implicit $flat_scr
- operand 0: $vgpr2_vgpr3
LLVM ERROR: Found 2 machine code errors.
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs