summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll')
-rw-r--r--llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll13
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll b/llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll
index 05c4dfa5acf..44b17b6b776 100644
--- a/llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll
+++ b/llvm/test/CodeGen/AMDGPU/mul_uint24-amdgcn.ll
@@ -77,12 +77,19 @@ define void @test_umul24_i16_vgpr(i32 addrspace(1)* %out, i16 addrspace(1)* %in)
ret void
}
-; FUNC-LABEL: {{^}}test_umul24_i8:
+; FIXME: Need to handle non-uniform case for function below (load without gep).
+; FUNC-LABEL: {{^}}test_umul24_i8_vgpr:
; GCN: v_mul_u32_u24_e{{(32|64)}} [[MUL:v[0-9]]], {{[sv][0-9], [sv][0-9]}}
; GCN: v_bfe_i32 v{{[0-9]}}, [[MUL]], 0, 8
-define void @test_umul24_i8(i32 addrspace(1)* %out, i8 %a, i8 %b) {
+define void @test_umul24_i8_vgpr(i32 addrspace(1)* %out, i8 addrspace(1)* %a, i8 addrspace(1)* %b) {
entry:
- %mul = mul i8 %a, %b
+ %tid.x = call i32 @llvm.amdgcn.workitem.id.x()
+ %tid.y = call i32 @llvm.amdgcn.workitem.id.y()
+ %a.ptr = getelementptr i8, i8 addrspace(1)* %a, i32 %tid.x
+ %b.ptr = getelementptr i8, i8 addrspace(1)* %b, i32 %tid.y
+ %a.l = load i8, i8 addrspace(1)* %a.ptr
+ %b.l = load i8, i8 addrspace(1)* %b.ptr
+ %mul = mul i8 %a.l, %b.l
%ext = sext i8 %mul to i32
store i32 %ext, i32 addrspace(1)* %out
ret void
OpenPOWER on IntegriCloud