| Issue |
167500
|
| Summary |
[AMDGPU] invalid PHI node generated after AMDGPULowerModuleLDS Pass
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
hzwangchaochen
|
The simplified LLVM IR is as follows:
```
@lds.size.2.align.2 = internal unnamed_addr addrspace(3) global [6144 x half] poison, align 2
define dso_local amdgpu_kernel void @flash_attentionV1(ptr addrspace(1) %out) {
bb3:
switch i32 0, label %bb10 [
i32 18, label %bb7
i32 1, label %bb7
i32 0, label %bb10
]
bb5:
switch i32 0, label %bb10 [
i32 18, label %bb7
i32 1, label %bb7
i32 0, label %bb10
]
bb7: ; preds = %bb5, %bb5, %bb3, %bb3
%phi8 = phi i64 [ ptrtoint (ptr addrspacecast (ptr addrspace(3) @lds.size.2.align.2 to ptr) to i64), %bb5 ], [ ptrtoint (ptr addrspacecast (ptr addrspace(3) @lds.size.2.align.2 to ptr) to i64), %bb5 ], [10, %bb3], [10, %bb3]
store i64 %phi8, ptr addrspace(1) %out, align 8
br label %bb10
bb10: ; preds = %bb3, %bb3, %bb2
ret void
}
```
编译命令如下:
```
./build/bin/llc -mtriple=amdgcn xxx.ll or ./build/bin/opt -S -mtriple=amdgcn-- -amdgpu-lower-module-ld xxx.ll
```
After AMDGPULowerModuleLDS Pass
bb5 and bb7 are transformed as follows:
```
bb5: ; No predecessors!
%0 = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.flash_attentionV1.lds to ptr
%1 = ptrtoint ptr %0 to i64
%2 = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.flash_attentionV1.lds to ptr
%3 = ptrtoint ptr %2 to i64
switch i32 0, label %bb10 [
i32 18, label %bb7
i32 1, label %bb7
i32 0, label %bb10
]
bb7: ; preds = %bb5, %bb5, %bb3, %bb3
%phi8 = phi i64 [ %3, %bb5 ], [ %1, %bb5 ], [ 10, %bb3 ], [ 10, %bb3 ]
store i64 %phi8, ptr addrspace(1) %out, align 8
br label %bb10
```
Then we encountered the following error message:
```
PHI node has multiple entries for the same basic block with different incoming values!
%phi8 = phi i64 [ %3, %bb5 ], [ %1, %bb5 ], [ 10, %bb3 ], [ 10, %bb3 ]
label %bb5
%3 = ptrtoint ptr %2 to i64
%1 = ptrtoint ptr %0 to i64
in function flash_attentionV1
```
Any ideas for this issues, thanks a lot~
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs