|
2 | 2 |
|
3 | 3 | ; CHECK: %[[#TypeImage:]] = OpTypeImage |
4 | 4 | ; CHECK: %[[#TypeSampler:]] = OpTypeSampler |
5 | | -; CHECK-DAG: %[[#TypeImagePtr:]] = OpTypePointer {{.*}} %[[#TypeImage]] |
6 | | -; CHECK-DAG: %[[#TypeSamplerPtr:]] = OpTypePointer {{.*}} %[[#TypeSampler]] |
7 | 5 |
|
8 | 6 | ; CHECK: %[[#srcimg:]] = OpFunctionParameter %[[#TypeImage]] |
9 | 7 | ; CHECK: %[[#sampler:]] = OpFunctionParameter %[[#TypeSampler]] |
10 | 8 |
|
11 | | -; CHECK: %[[#srcimg_addr:]] = OpVariable %[[#TypeImagePtr]] |
12 | | -; CHECK: %[[#sampler_addr:]] = OpVariable %[[#TypeSamplerPtr]] |
| 9 | +; CHECK: %[[#srcimg_addr:]] = OpVariable %[[#TypeImage]] |
| 10 | +; CHECK: %[[#sampler_addr:]] = OpVariable %[[#TypeSampler]] |
13 | 11 |
|
14 | 12 | ; CHECK: OpStore %[[#srcimg_addr]] %[[#srcimg]] |
15 | 13 | ; CHECK: OpStore %[[#sampler_addr]] %[[#sampler]] |
|
43 | 41 | ;; results[tid_x + tid_y * get_image_width(srcimg)] = read_imagef(srcimg, sampler, (int2){tid_x, tid_y}); |
44 | 42 | ;; } |
45 | 43 |
|
46 | | -%opencl.image2d_ro_t = type opaque |
47 | | -%opencl.sampler_t = type opaque |
48 | | - |
49 | | -define dso_local spir_kernel void @test_fn(%opencl.image2d_ro_t addrspace(1)* %srcimg, %opencl.sampler_t addrspace(2)* %sampler, <4 x float> addrspace(1)* noundef %results) { |
| 44 | +define dso_local spir_kernel void @test_fn(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %srcimg, target("spirv.Sampler") %sampler, <4 x float> addrspace(1)* noundef %results) { |
50 | 45 | entry: |
51 | | - %srcimg.addr = alloca %opencl.image2d_ro_t addrspace(1)*, align 4 |
52 | | - %sampler.addr = alloca %opencl.sampler_t addrspace(2)*, align 4 |
| 46 | + %srcimg.addr = alloca target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), align 4 |
| 47 | + %sampler.addr = alloca target("spirv.Sampler"), align 4 |
53 | 48 | %results.addr = alloca <4 x float> addrspace(1)*, align 4 |
54 | 49 | %tid_x = alloca i32, align 4 |
55 | 50 | %tid_y = alloca i32, align 4 |
56 | 51 | %.compoundliteral = alloca <2 x i32>, align 8 |
57 | | - store %opencl.image2d_ro_t addrspace(1)* %srcimg, %opencl.image2d_ro_t addrspace(1)** %srcimg.addr, align 4 |
58 | | - store %opencl.sampler_t addrspace(2)* %sampler, %opencl.sampler_t addrspace(2)** %sampler.addr, align 4 |
| 52 | + store target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %srcimg, target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)* %srcimg.addr, align 4 |
| 53 | + store target("spirv.Sampler") %sampler, target("spirv.Sampler")* %sampler.addr, align 4 |
59 | 54 | store <4 x float> addrspace(1)* %results, <4 x float> addrspace(1)** %results.addr, align 4 |
60 | 55 | %call = call spir_func i32 @_Z13get_global_idj(i32 noundef 0) |
61 | 56 | store i32 %call, i32* %tid_x, align 4 |
62 | 57 | %call1 = call spir_func i32 @_Z13get_global_idj(i32 noundef 1) |
63 | 58 | store i32 %call1, i32* %tid_y, align 4 |
64 | | - %0 = load %opencl.image2d_ro_t addrspace(1)*, %opencl.image2d_ro_t addrspace(1)** %srcimg.addr, align 4 |
65 | | - %1 = load %opencl.sampler_t addrspace(2)*, %opencl.sampler_t addrspace(2)** %sampler.addr, align 4 |
| 59 | + %0 = load target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)* %srcimg.addr, align 4 |
| 60 | + %1 = load target("spirv.Sampler"), target("spirv.Sampler")* %sampler.addr, align 4 |
66 | 61 | %2 = load i32, i32* %tid_x, align 4 |
67 | 62 | %vecinit = insertelement <2 x i32> undef, i32 %2, i32 0 |
68 | 63 | %3 = load i32, i32* %tid_y, align 4 |
69 | 64 | %vecinit2 = insertelement <2 x i32> %vecinit, i32 %3, i32 1 |
70 | 65 | store <2 x i32> %vecinit2, <2 x i32>* %.compoundliteral, align 8 |
71 | 66 | %4 = load <2 x i32>, <2 x i32>* %.compoundliteral, align 8 |
72 | | - %call3 = call spir_func <4 x float> @_Z11read_imagef14ocl_image2d_ro11ocl_samplerDv2_i(%opencl.image2d_ro_t addrspace(1)* %0, %opencl.sampler_t addrspace(2)* %1, <2 x i32> noundef %4) |
| 67 | + %call3 = call spir_func <4 x float> @_Z11read_imagef14ocl_image2d_ro11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %0, target("spirv.Sampler") %1, <2 x i32> noundef %4) |
73 | 68 | %5 = load <4 x float> addrspace(1)*, <4 x float> addrspace(1)** %results.addr, align 4 |
74 | 69 | %6 = load i32, i32* %tid_x, align 4 |
75 | 70 | %7 = load i32, i32* %tid_y, align 4 |
76 | | - %8 = load %opencl.image2d_ro_t addrspace(1)*, %opencl.image2d_ro_t addrspace(1)** %srcimg.addr, align 4 |
77 | | - %call4 = call spir_func i32 @_Z15get_image_width14ocl_image2d_ro(%opencl.image2d_ro_t addrspace(1)* %8) |
| 71 | + %8 = load target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)* %srcimg.addr, align 4 |
| 72 | + %call4 = call spir_func i32 @_Z15get_image_width14ocl_image2d_ro(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %8) |
78 | 73 | %mul = mul nsw i32 %7, %call4 |
79 | 74 | %add = add nsw i32 %6, %mul |
80 | 75 | %arrayidx = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %5, i32 %add |
|
84 | 79 |
|
85 | 80 | declare spir_func i32 @_Z13get_global_idj(i32 noundef) |
86 | 81 |
|
87 | | -declare spir_func <4 x float> @_Z11read_imagef14ocl_image2d_ro11ocl_samplerDv2_i(%opencl.image2d_ro_t addrspace(1)*, %opencl.sampler_t addrspace(2)*, <2 x i32> noundef) |
| 82 | +declare spir_func <4 x float> @_Z11read_imagef14ocl_image2d_ro11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), target("spirv.Sampler"), <2 x i32> noundef) |
88 | 83 |
|
89 | | -declare spir_func i32 @_Z15get_image_width14ocl_image2d_ro(%opencl.image2d_ro_t addrspace(1)*) |
| 84 | +declare spir_func i32 @_Z15get_image_width14ocl_image2d_ro(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)) |
0 commit comments