diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-31 23:48:40 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-31 23:48:40 +0000 |
commit | 2a46d810387abcc29ce4ca28d27aab02e7a94e37 (patch) | |
tree | 0dbe0a87044a525bbfe85bb4a062886ae9b9009b /llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll | |
parent | 1575cb893c5f1c8c5984a577bb239e4ecbad0796 (diff) | |
download | bcm5719-llvm-2a46d810387abcc29ce4ca28d27aab02e7a94e37.tar.gz bcm5719-llvm-2a46d810387abcc29ce4ca28d27aab02e7a94e37.zip |
InferAddressSpaces: Fix broken casting of constants
llvm-svn: 293718
Diffstat (limited to 'llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll')
-rw-r--r-- | llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll index 5a06f1fba21..b185ede2657 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/icmp.ll @@ -78,13 +78,22 @@ define i1 @icmp_group_flat_cmp_constant_inttoptr(i32 addrspace(3)* %group.ptr.0) } ; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_null( -; CHECK: %cmp = icmp eq i32 addrspace(3)* %group.ptr.0, addrspacecast (i32* null to i32 addrspace(3)*) +; CHECK: %1 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* +; CHECK: %cmp = icmp eq i32 addrspace(4)* %1, addrspacecast (i32* null to i32 addrspace(4)*) define i1 @icmp_mismatch_flat_group_private_cmp_null(i32 addrspace(3)* %group.ptr.0) #0 { %cast0 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* %cmp = icmp eq i32 addrspace(4)* %cast0, addrspacecast (i32* null to i32 addrspace(4)*) ret i1 %cmp } +; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_undef( +; CHECK: %cmp = icmp eq i32 addrspace(3)* %group.ptr.0, undef +define i1 @icmp_mismatch_flat_group_private_cmp_undef(i32 addrspace(3)* %group.ptr.0) #0 { + %cast0 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* + %cmp = icmp eq i32 addrspace(4)* %cast0, addrspacecast (i32* undef to i32 addrspace(4)*) + ret i1 %cmp +} + @lds0 = internal addrspace(3) global i32 0, align 4 @global0 = internal addrspace(1) global i32 0, align 4 @@ -114,7 +123,8 @@ define i1 @icmp_group_flat_cmp_undef(i32 addrspace(3)* %group.ptr.0) #0 { ; Test non-canonical orders ; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_null_swap( -; CHECK: %cmp = icmp eq i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*), %group.ptr.0 +; CHECK: %1 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* +; CHECK: %cmp = icmp eq i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*), %1 define i1 @icmp_mismatch_flat_group_private_cmp_null_swap(i32 addrspace(3)* %group.ptr.0) #0 { %cast0 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* %cmp = icmp eq i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*), %cast0 @@ -129,6 +139,14 @@ define i1 @icmp_group_flat_cmp_undef_swap(i32 addrspace(3)* %group.ptr.0) #0 { ret i1 %cmp } +; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_undef_swap( +; CHECK: %cmp = icmp eq i32 addrspace(3)* undef, %group.ptr.0 +define i1 @icmp_mismatch_flat_group_private_cmp_undef_swap(i32 addrspace(3)* %group.ptr.0) #0 { + %cast0 = addrspacecast i32 addrspace(3)* %group.ptr.0 to i32 addrspace(4)* + %cmp = icmp eq i32 addrspace(4)* addrspacecast (i32* undef to i32 addrspace(4)*), %cast0 + ret i1 %cmp +} + ; TODO: Should be handled ; CHECK-LABEL: @icmp_flat_flat_from_group_vector( ; CHECK: %cmp = icmp eq <2 x i32 addrspace(4)*> %cast0, %cast1 |