|
22 | 22 | ; y = __builtin_intel_fpga_mem(&C->Field2, 0, 127); |
23 | 23 | ; z = __builtin_intel_fpga_mem(C, BURST_COAL | CACHE_SIZE_FLAG | DONT_STATICALLY_COAL | PREFETCH, 127); |
24 | 24 | ; t = __builtin_intel_fpga_mem((double *) A, BURST_COAL | CACHE_SIZE_FLAG, 0); |
| 25 | +; *__builtin_intel_fpga_mem(A, BURST_COAL | CACHE_SIZE_FLAG, 0) = 5; |
| 26 | +; int s = *__builtin_intel_fpga_mem(B, DONT_STATICALLY_COAL | PREFETCH, 0); |
25 | 27 | ; } |
26 | 28 | ; |
27 | 29 | ; template <typename name, typename Func> |
@@ -81,6 +83,8 @@ target triple = "spir64-unknown-unknown-sycldevice" |
81 | 83 | @.str.6 = private unnamed_addr constant [28 x i8] c"{params:15}{cache-size:127}\00", section "llvm.metadata" |
82 | 84 | ; TODO: Investigate why the same global annotation string shows up twice in backwards translation. |
83 | 85 | ; CHECK-LLVM: [[PARAM_3_CACHE_0_DOUBLE:@[a-z0-9_.]+]] = {{.*}}{params:3}{cache-size:0} |
| 86 | +; CHECK-LLVM: [[PARAM_3_CACHE_0_DOUBLE2:@[a-z0-9_.]+]] = {{.*}}{params:3}{cache-size:0} |
| 87 | +; CHECK-LLVM: [[PARAM_12_CACHE_0_DOUBLE:@[a-z0-9_.]+]] = {{.*}}{params:12} |
84 | 88 |
|
85 | 89 | ; Function Attrs: norecurse nounwind |
86 | 90 | define spir_kernel void @_ZTSZ4mainE11fake_kernel() #0 !kernel_arg_addr_space !4 !kernel_arg_access_qual !4 !kernel_arg_type !4 !kernel_arg_base_type !4 !kernel_arg_type_qual !4 { |
@@ -142,10 +146,12 @@ entry: |
142 | 146 | ; CHECK-LLVM: %[[INT_VAR:[[:alnum:].]+]] = alloca i32 addrspace(4)*, align 8 |
143 | 147 | ; CHECK-LLVM: %[[STRUCT_VAR:[[:alnum:].]+]] = alloca %struct{{.*}}State addrspace(4)*, align 8 |
144 | 148 | ; CHECK-LLVM: %[[DOUBLE_VAR:[[:alnum:].]+]] = alloca double addrspace(4)*, align 8 |
| 149 | +; CHECK-LLVM: %[[INT_VAR_1:[[:alnum:].]+]] = alloca i32, align 4 |
145 | 150 | %x = alloca float addrspace(4)*, align 8 |
146 | 151 | %y = alloca i32 addrspace(4)*, align 8 |
147 | 152 | %z = alloca %struct._ZTS5State.State addrspace(4)*, align 8 |
148 | 153 | %t = alloca double addrspace(4)*, align 8 |
| 154 | + %s = alloca i32, align 4 |
149 | 155 | store float addrspace(4)* %A, float addrspace(4)** %A.addr, align 8, !tbaa !5 |
150 | 156 | store i32 addrspace(4)* %B, i32 addrspace(4)** %B.addr, align 8, !tbaa !5 |
151 | 157 | store %struct._ZTS5State.State addrspace(4)* %C, %struct._ZTS5State.State addrspace(4)** %C.addr, align 8, !tbaa !5 |
@@ -206,14 +212,32 @@ entry: |
206 | 212 | %17 = bitcast float addrspace(4)* %16 to double addrspace(4)* |
207 | 213 | %18 = call double addrspace(4)* @llvm.ptr.annotation.p4f64(double addrspace(4)* %17, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i32 0, i32 0), i32 0) #6 |
208 | 214 | store double addrspace(4)* %18, double addrspace(4)** %t, align 8, !tbaa !5 |
209 | | - %19 = bitcast double addrspace(4)** %t to i8* |
210 | | - call void @llvm.lifetime.end.p0i8(i64 8, i8* %19) #5 |
211 | | - %20 = bitcast %struct._ZTS5State.State addrspace(4)** %z to i8* |
212 | | - call void @llvm.lifetime.end.p0i8(i64 8, i8* %20) #5 |
213 | | - %21 = bitcast i32 addrspace(4)** %y to i8* |
214 | | - call void @llvm.lifetime.end.p0i8(i64 8, i8* %21) #5 |
215 | | - %22 = bitcast float addrspace(4)** %x to i8* |
216 | | - call void @llvm.lifetime.end.p0i8(i64 8, i8* %22) #5 |
| 215 | +; CHECK-LLVM: %[[FLOAT_FUNC_PARAM_LOAD:[[:alnum:].]+]] = load float addrspace(4)*, float addrspace(4)** %[[FLOAT_FUNC_PARAM]] |
| 216 | +; CHECK-LLVM: %[[INTRINSIC_CALL:[[:alnum:].]+]] = call float addrspace(4)* @llvm.ptr.annotation.p4f32(float addrspace(4)* %[[FLOAT_FUNC_PARAM_LOAD]], i8* getelementptr inbounds ({{.*}} [[PARAM_3_CACHE_0_DOUBLE2]] |
| 217 | +; CHECK-LLVM: store float 5.000000e+00, float addrspace(4)* %[[INTRINSIC_CALL]] |
| 218 | + %19 = load float addrspace(4)*, float addrspace(4)** %A.addr, align 8, !tbaa !5 |
| 219 | + %20 = call float addrspace(4)* @llvm.ptr.annotation.p4f32(float addrspace(4)* %19, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i32 0, i32 0), i32 0) #6 |
| 220 | + store float 5.000000e+00, float addrspace(4)* %20, align 4, !tbaa !5 |
| 221 | + %21 = bitcast i32* %s to i8* |
| 222 | + call void @llvm.lifetime.start.p0i8(i64 4, i8* %21) #5 |
| 223 | +; CHECK-LLVM: %[[INT1_FUNC_PARAM_LOAD:[[:alnum:].]+]] = load i32 addrspace(4)*, i32 addrspace(4)** %[[INT_FUNC_PARAM]] |
| 224 | +; CHECK-LLVM: %[[INTRINSIC_CALL:[[:alnum:].]+]] = call i32 addrspace(4)* @llvm.ptr.annotation.p4i32(i32 addrspace(4)* %[[INT1_FUNC_PARAM_LOAD]], i8* getelementptr inbounds ({{.*}} [[PARAM_12_CACHE_0_DOUBLE]] |
| 225 | +; CHECK-LLVM: %[[INTRINSIC_RESULT_LOAD:[[:alnum:].]+]] = load i32, i32 addrspace(4)* %[[INTRINSIC_CALL]] |
| 226 | +; CHECK-LLVM: store i32 %[[INTRINSIC_RESULT_LOAD]], i32* %[[INT_VAR_1]] |
| 227 | + %22 = load i32 addrspace(4)*, i32 addrspace(4)** %B.addr, align 8, !tbaa !5 |
| 228 | + %23 = call i32 addrspace(4)* @llvm.ptr.annotation.p4i32(i32 addrspace(4)* %22, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i32 0, i32 0), i32 0) #6 |
| 229 | + %24 = load i32, i32 addrspace(4)* %23, align 4, !tbaa !5 |
| 230 | + store i32 %24, i32* %s, align 4, !tbaa !5 |
| 231 | + %25 = bitcast i32* %s to i8* |
| 232 | + call void @llvm.lifetime.end.p0i8(i64 4, i8* %25) #5 |
| 233 | + %26 = bitcast double addrspace(4)** %t to i8* |
| 234 | + call void @llvm.lifetime.end.p0i8(i64 8, i8* %26) #5 |
| 235 | + %27 = bitcast %struct._ZTS5State.State addrspace(4)** %z to i8* |
| 236 | + call void @llvm.lifetime.end.p0i8(i64 8, i8* %27) #5 |
| 237 | + %28 = bitcast i32 addrspace(4)** %y to i8* |
| 238 | + call void @llvm.lifetime.end.p0i8(i64 8, i8* %28) #5 |
| 239 | + %29 = bitcast float addrspace(4)** %x to i8* |
| 240 | + call void @llvm.lifetime.end.p0i8(i64 8, i8* %29) #5 |
217 | 241 | ret void |
218 | 242 | } |
219 | 243 |
|
|
0 commit comments