brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · aa39797 Raw
103 lines · plain
1; This test checks that the address space casts for SPIR-V generic pointer casts2; are lowered correctly by the infer-address-spaces pass.3; RUN: opt < %s -passes=infer-address-spaces -S --mtriple=spirv64-unknown-unknown | FileCheck %s4 5; Casting a global pointer to a global pointer. 6; The uses of c2 will be replaced with %global.7; CHECK: @kernel1(ptr addrspace(1) %global)8define i1 @kernel1(ptr addrspace(1) %global) {9    %c1 = addrspacecast ptr addrspace(1) %global to ptr addrspace(4)10    %c2 = call ptr addrspace(1) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)11    ; CHECK: %b1 = icmp eq ptr addrspace(1) %global, null12    %b1 = icmp eq ptr addrspace(1) %c2, null 13    ret i1 %b114}15 16; Casting a global pointer to a local pointer.17; The uses of c2 will be replaced with null.18; CHECK: @kernel2(ptr addrspace(1) %global)19define i1 @kernel2(ptr addrspace(1) %global) {20    %c1 = addrspacecast ptr addrspace(1) %global to ptr addrspace(4)21    %c2 = call ptr addrspace(3) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)22    ; CHECK: %b1 = icmp eq ptr addrspace(3) null, null23    %b1 = icmp eq ptr addrspace(3) %c2, null24    ret i1 %b125}26 27; Casting a global pointer to a private pointer.28; The uses of c2 will be replaced with null.29; CHECK: @kernel3(ptr addrspace(1) %global)30define i1 @kernel3(ptr addrspace(1) %global) {31    %c1 = addrspacecast ptr addrspace(1) %global to ptr addrspace(4)32    %c2 = call ptr @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)33    ; CHECK: %b1 = icmp eq ptr null, null34    %b1 = icmp eq ptr %c2, null 35    ret i1 %b136}37 38; Casting a local pointer to a local pointer.39; The uses of c2 will be replaced with %local.40; CHECK: @kernel4(ptr addrspace(3) %local)41define i1 @kernel4(ptr addrspace(3) %local) {42    %c1 = addrspacecast ptr addrspace(3) %local to ptr addrspace(4)43    %c2 = call ptr addrspace(3) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)44    ; CHECK: %b1 = icmp eq ptr addrspace(3) %local, null45    %b1 = icmp eq ptr addrspace(3) %c2, null 46    ret i1 %b147}48 49; Casting a local pointer to a global pointer.50; The uses of c2 will be replaced with null.51; CHECK: @kernel5(ptr addrspace(3) %local)52define i1 @kernel5(ptr addrspace(3) %local) {53    %c1 = addrspacecast ptr addrspace(3) %local to ptr addrspace(4)54    %c2 = call ptr addrspace(1) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)55    ; CHECK: %b1 = icmp eq ptr addrspace(1) null, null56    %b1 = icmp eq ptr addrspace(1) %c2, null 57    ret i1 %b158}59 60; Casting a local pointer to a private pointer.61; The uses of c2 will be replaced with null.62; CHECK: @kernel6(ptr addrspace(3) %local)63define i1 @kernel6(ptr addrspace(3) %local) {64    %c1 = addrspacecast ptr addrspace(3) %local to ptr addrspace(4)65    %c2 = call ptr @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)66    ; CHECK: %b1 = icmp eq ptr null, null67    %b1 = icmp eq ptr %c2, null 68    ret i1 %b169}70 71; Casting a private pointer to a private pointer.72; The uses of c2 will be replaced with %private.73; CHECK: @kernel7(ptr %private)74define i1 @kernel7(ptr %private) {75    %c1 = addrspacecast ptr %private to ptr addrspace(4)76    %c2 = call ptr @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)77    ; CHECK: %b1 = icmp eq ptr %private, null78    %b1 = icmp eq ptr %c2, null 79    ret i1 %b180}81 82; Casting a private pointer to a global pointer.83; The uses of c2 will be replaced with null.84; CHECK: @kernel8(ptr %private)85define i1 @kernel8(ptr %private) {86    %c1 = addrspacecast ptr %private to ptr addrspace(4)87    %c2 = call ptr addrspace(1) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)88    ; CHECK: %b1 = icmp eq ptr addrspace(1) null, null89    %b1 = icmp eq ptr addrspace(1) %c2, null90    ret i1 %b191}92 93; Casting a private pointer to a local pointer.94; The uses of c2 will be replaced with null.95; CHECK: @kernel9(ptr %private)96define i1 @kernel9(ptr %private) {97    %c1 = addrspacecast ptr %private to ptr addrspace(4)98    %c2 = call ptr addrspace(3) @llvm.spv.generic.cast.to.ptr.explicit(ptr addrspace(4) %c1)99    ; CHECK: %b1 = icmp eq ptr addrspace(3) null, null100    %b1 = icmp eq ptr addrspace(3) %c2, null101    ret i1 %b1102}103