diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2013-11-16 20:50:54 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2013-11-16 20:50:54 +0000 |
commit | dfb3e7092ebcb919c26f63e98a1bd14647671dea (patch) | |
tree | 09f368b8e4f7895f2b8e16ed80e75ce599471348 /llvm/test/CodeGen/R600/32-bit-local-address-space.ll | |
parent | 19231e630e4ccf8b8ced1c9a7fe65f596a160a5c (diff) | |
download | bcm5719-llvm-dfb3e7092ebcb919c26f63e98a1bd14647671dea.tar.gz bcm5719-llvm-dfb3e7092ebcb919c26f63e98a1bd14647671dea.zip |
Fix assert on unaligned access to global with different address space size.
llvm-svn: 194934
Diffstat (limited to 'llvm/test/CodeGen/R600/32-bit-local-address-space.ll')
-rw-r--r-- | llvm/test/CodeGen/R600/32-bit-local-address-space.ll | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/R600/32-bit-local-address-space.ll b/llvm/test/CodeGen/R600/32-bit-local-address-space.ll index 2ae467105af..566a422d9ef 100644 --- a/llvm/test/CodeGen/R600/32-bit-local-address-space.ll +++ b/llvm/test/CodeGen/R600/32-bit-local-address-space.ll @@ -50,4 +50,26 @@ define void @null_32bit_lds_ptr(i32 addrspace(1)* %out, i32 addrspace(3)* %lds) %x = select i1 %cmp, i32 123, i32 456 store i32 %x, i32 addrspace(1)* %out ret void -}
\ No newline at end of file +} + +; CHECK-LABEL: @mul_32bit_ptr: +; CHECK: V_MUL_LO_I32 +; CHECK-NEXT: V_ADD_I32_e32 +; CHECK-NEXT: DS_READ_B32 +define void @mul_32bit_ptr(float addrspace(1)* %out, [3 x float] addrspace(3)* %lds, i32 %tid) { + %ptr = getelementptr [3 x float] addrspace(3)* %lds, i32 %tid, i32 0 + %val = load float addrspace(3)* %ptr + store float %val, float addrspace(1)* %out + ret void +} + +@g_lds = addrspace(3) global float zeroinitializer, align 4 + +; CHECK-LABEL: @infer_ptr_alignment_global_offset: +; CHECK: V_MOV_B32_e32 [[REG:v[0-9]+]], 0 +; CHECK: DS_READ_B32 v{{[0-9]+}}, 0, [[REG]] +define void @infer_ptr_alignment_global_offset(float addrspace(1)* %out, i32 %tid) { + %val = load float addrspace(3)* @g_lds + store float %val, float addrspace(1)* %out + ret void +} |