brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · c369772 Raw
176 lines · plain
1; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=infer-address-spaces %s | FileCheck %s2 3; CHECK-LABEL: @icmp_flat_cmp_self(4; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, %group.ptr.05define i1 @icmp_flat_cmp_self(ptr addrspace(3) %group.ptr.0) #0 {6  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr7  %cmp = icmp eq ptr %cast0, %cast08  ret i1 %cmp9}10 11; CHECK-LABEL: @icmp_flat_flat_from_group(12; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, %group.ptr.113define i1 @icmp_flat_flat_from_group(ptr addrspace(3) %group.ptr.0, ptr addrspace(3) %group.ptr.1) #0 {14  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr15  %cast1 = addrspacecast ptr addrspace(3) %group.ptr.1 to ptr16  %cmp = icmp eq ptr %cast0, %cast117  ret i1 %cmp18}19 20; CHECK-LABEL: @icmp_mismatch_flat_from_group_private(21; CHECK: %cast0 = addrspacecast ptr addrspace(5) %private.ptr.0 to ptr22; CHECK: %cast1 = addrspacecast ptr addrspace(3) %group.ptr.1 to ptr23; CHECK: %cmp = icmp eq ptr %cast0, %cast124define i1 @icmp_mismatch_flat_from_group_private(ptr addrspace(5) %private.ptr.0, ptr addrspace(3) %group.ptr.1) #0 {25  %cast0 = addrspacecast ptr addrspace(5) %private.ptr.0 to ptr26  %cast1 = addrspacecast ptr addrspace(3) %group.ptr.1 to ptr27  %cmp = icmp eq ptr %cast0, %cast128  ret i1 %cmp29}30 31; CHECK-LABEL: @icmp_flat_group_flat(32; CHECK: %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr33; CHECK: %cmp = icmp eq ptr %cast0, %flat.ptr.134define i1 @icmp_flat_group_flat(ptr addrspace(3) %group.ptr.0, ptr %flat.ptr.1) #0 {35  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr36  %cmp = icmp eq ptr %cast0, %flat.ptr.137  ret i1 %cmp38}39 40; CHECK-LABEL: @icmp_flat_flat_group(41; CHECK: %cast1 = addrspacecast ptr addrspace(3) %group.ptr.1 to ptr42; CHECK: %cmp = icmp eq ptr %flat.ptr.0, %cast143define i1 @icmp_flat_flat_group(ptr %flat.ptr.0, ptr addrspace(3) %group.ptr.1) #0 {44  %cast1 = addrspacecast ptr addrspace(3) %group.ptr.1 to ptr45  %cmp = icmp eq ptr %flat.ptr.0, %cast146  ret i1 %cmp47}48 49; Keeping as cmp addrspace(3)* is better50; CHECK-LABEL: @icmp_flat_to_group_cmp(51; CHECK: %cast0 = addrspacecast ptr %flat.ptr.0 to ptr addrspace(3)52; CHECK: %cast1 = addrspacecast ptr %flat.ptr.1 to ptr addrspace(3)53; CHECK: %cmp = icmp eq ptr addrspace(3) %cast0, %cast154define i1 @icmp_flat_to_group_cmp(ptr %flat.ptr.0, ptr %flat.ptr.1) #0 {55  %cast0 = addrspacecast ptr %flat.ptr.0 to ptr addrspace(3)56  %cast1 = addrspacecast ptr %flat.ptr.1 to ptr addrspace(3)57  %cmp = icmp eq ptr addrspace(3) %cast0, %cast158  ret i1 %cmp59}60 61; FIXME: Should be able to ask target about how to constant fold the62; constant cast if this is OK to change if 0 is a valid pointer.63 64; CHECK-LABEL: @icmp_group_flat_cmp_null(65; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, addrspacecast (ptr null to ptr addrspace(3))66define i1 @icmp_group_flat_cmp_null(ptr addrspace(3) %group.ptr.0) #0 {67  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr68  %cmp = icmp eq ptr %cast0, null69  ret i1 %cmp70}71 72; CHECK-LABEL: @icmp_group_flat_cmp_constant_inttoptr(73; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, addrspacecast (ptr inttoptr (i64 400 to ptr) to ptr addrspace(3))74define i1 @icmp_group_flat_cmp_constant_inttoptr(ptr addrspace(3) %group.ptr.0) #0 {75  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr76  %cmp = icmp eq ptr %cast0, inttoptr (i64 400 to ptr)77  ret i1 %cmp78}79 80; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_null(81; CHECK: %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr82; CHECK: %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(5) null to ptr)83define i1 @icmp_mismatch_flat_group_private_cmp_null(ptr addrspace(3) %group.ptr.0) #0 {84  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr85  %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(5) null to ptr)86  ret i1 %cmp87}88 89; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_undef(90; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, undef91define i1 @icmp_mismatch_flat_group_private_cmp_undef(ptr addrspace(3) %group.ptr.0) #0 {92  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr93  %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(5) undef to ptr)94  ret i1 %cmp95}96 97; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_poison(98; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, poison99define i1 @icmp_mismatch_flat_group_private_cmp_poison(ptr addrspace(3) %group.ptr.0) #0 {100  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr101  %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(5) poison to ptr)102  ret i1 %cmp103}104 105@lds0 = internal addrspace(3) global i32 0, align 4106@global0 = internal addrspace(1) global i32 0, align 4107 108; CHECK-LABEL: @icmp_mismatch_flat_group_global_cmp_gv(109; CHECK: %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr110; CHECK: %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(1) @global0 to ptr)111define i1 @icmp_mismatch_flat_group_global_cmp_gv(ptr addrspace(3) %group.ptr.0) #0 {112  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr113  %cmp = icmp eq ptr %cast0, addrspacecast (ptr addrspace(1) @global0 to ptr)114  ret i1 %cmp115}116 117; CHECK-LABEL: @icmp_mismatch_group_global_cmp_gv_gv(118; CHECK: %cmp = icmp eq ptr addrspacecast (ptr addrspace(3) @lds0 to ptr), addrspacecast (ptr addrspace(1) @global0 to ptr)119define i1 @icmp_mismatch_group_global_cmp_gv_gv(ptr addrspace(3) %group.ptr.0) #0 {120  %cmp = icmp eq ptr addrspacecast (ptr addrspace(3) @lds0 to ptr), addrspacecast (ptr addrspace(1) @global0 to ptr)121  ret i1 %cmp122}123 124; CHECK-LABEL: @icmp_group_flat_cmp_poison(125; CHECK: %cmp = icmp eq ptr addrspace(3) %group.ptr.0, poison126define i1 @icmp_group_flat_cmp_poison(ptr addrspace(3) %group.ptr.0) #0 {127  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr128  %cmp = icmp eq ptr %cast0, poison129  ret i1 %cmp130}131 132; Test non-canonical orders133; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_null_swap(134; CHECK: %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr135; CHECK: %cmp = icmp eq ptr addrspacecast (ptr addrspace(5) null to ptr), %cast0136define i1 @icmp_mismatch_flat_group_private_cmp_null_swap(ptr addrspace(3) %group.ptr.0) #0 {137  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr138  %cmp = icmp eq ptr addrspacecast (ptr addrspace(5) null to ptr), %cast0139  ret i1 %cmp140}141 142; CHECK-LABEL: @icmp_group_flat_cmp_poison_swap(143; CHECK: %cmp = icmp eq ptr addrspace(3) poison, %group.ptr.0144define i1 @icmp_group_flat_cmp_poison_swap(ptr addrspace(3) %group.ptr.0) #0 {145  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr146  %cmp = icmp eq ptr poison, %cast0147  ret i1 %cmp148}149 150; CHECK-LABEL: @icmp_group_flat_cmp_undef_swap(151; CHECK: %cmp = icmp eq ptr addrspace(3) undef, %group.ptr.0152define i1 @icmp_group_flat_cmp_undef_swap(ptr addrspace(3) %group.ptr.0) #0 {153  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr154  %cmp = icmp eq ptr undef, %cast0155  ret i1 %cmp156}157 158; CHECK-LABEL: @icmp_mismatch_flat_group_private_cmp_poison_swap(159; CHECK: %cmp = icmp eq ptr addrspace(3) poison, %group.ptr.0160define i1 @icmp_mismatch_flat_group_private_cmp_poison_swap(ptr addrspace(3) %group.ptr.0) #0 {161  %cast0 = addrspacecast ptr addrspace(3) %group.ptr.0 to ptr162  %cmp = icmp eq ptr addrspacecast (ptr addrspace(5) poison to ptr), %cast0163  ret i1 %cmp164}165 166; CHECK-LABEL: @icmp_flat_flat_from_group_vector(167; CHECK: %cmp = icmp eq <2 x ptr addrspace(3)> %group.ptr.0, %group.ptr.1168define <2 x i1> @icmp_flat_flat_from_group_vector(<2 x ptr addrspace(3)> %group.ptr.0, <2 x ptr addrspace(3)> %group.ptr.1) #0 {169  %cast0 = addrspacecast <2 x ptr addrspace(3)> %group.ptr.0 to <2 x ptr>170  %cast1 = addrspacecast <2 x ptr addrspace(3)> %group.ptr.1 to <2 x ptr>171  %cmp = icmp eq <2 x ptr> %cast0, %cast1172  ret <2 x i1> %cmp173}174 175attributes #0 = { nounwind }176