Skip to content

Commit d3f8426

Browse files
[SPIR-V][WIP] Convert LIT tests to opaque pointers
1 parent 20f650b commit d3f8426

18 files changed

Lines changed: 244 additions & 319 deletions

llvm/test/CodeGen/SPIRV/SampledImageRetType.ll

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
; RUN: llc -O0 -opaque-pointers=0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
1+
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
22

3-
%opencl.image1d_ro_t = type opaque
43
; CHECK: %[[#image1d_t:]] = OpTypeImage
5-
%opencl.sampler_t = type opaque
64
; CHECK: %[[#sampler_t:]] = OpTypeSampler
75
; CHECK: %[[#sampled_image_t:]] = OpTypeSampledImage
86

9-
declare dso_local spir_func i8 addrspace(4)* @_Z20__spirv_SampledImageI14ocl_image1d_roPvET0_T_11ocl_sampler(%opencl.image1d_ro_t addrspace(1)*, %opencl.sampler_t addrspace(2)*) local_unnamed_addr
7+
declare dso_local spir_func ptr addrspace(4) @_Z20__spirv_SampledImageI14ocl_image1d_roPvET0_T_11ocl_sampler(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 0) %0, target("spirv.Sampler") %1) local_unnamed_addr
108

11-
declare dso_local spir_func <4 x float> @_Z30__spirv_ImageSampleExplicitLodIPvDv4_fiET0_T_T1_if(i8 addrspace(4)*, i32, i32, float) local_unnamed_addr
9+
declare dso_local spir_func <4 x float> @_Z30__spirv_ImageSampleExplicitLodIPvDv4_fiET0_T_T1_if(ptr addrspace(4) %0, i32 %1, i32 %2, float %3) local_unnamed_addr
1210

1311
@__spirv_BuiltInGlobalInvocationId = external dso_local local_unnamed_addr addrspace(2) constant <3 x i64>, align 32
1412

15-
define weak_odr dso_local spir_kernel void @_ZTS17image_kernel_readILi1EE(%opencl.image1d_ro_t addrspace(1)*, %opencl.sampler_t addrspace(2)*) {
13+
define weak_odr dso_local spir_kernel void @_ZTS17image_kernel_readILi1EE(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 0), target("spirv.Sampler")) {
1614
; CHECK: OpFunction
1715
; CHECK: %[[#image:]] = OpFunctionParameter %[[#image1d_t]]
1816
; CHECK: %[[#sampler:]] = OpFunctionParameter %[[#sampler_t]]
19-
%3 = load <3 x i64>, <3 x i64> addrspace(2)* @__spirv_BuiltInGlobalInvocationId, align 32
17+
%3 = load <3 x i64>, ptr addrspace(2) @__spirv_BuiltInGlobalInvocationId, align 32
2018
%4 = extractelement <3 x i64> %3, i64 0
2119
%5 = trunc i64 %4 to i32
22-
%6 = tail call spir_func i8 addrspace(4)* @_Z20__spirv_SampledImageI14ocl_image1d_roPvET0_T_11ocl_sampler(%opencl.image1d_ro_t addrspace(1)* %0, %opencl.sampler_t addrspace(2)* %1)
23-
%7 = tail call spir_func <4 x float> @_Z30__spirv_ImageSampleExplicitLodIPvDv4_fiET0_T_T1_if(i8 addrspace(4)* %6, i32 %5, i32 2, float 0.000000e+00)
20+
%6 = call spir_func ptr addrspace(4) @_Z20__spirv_SampledImageI14ocl_image1d_roPvET0_T_11ocl_sampler(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 0) %0, target("spirv.Sampler") %1)
21+
%7 = call spir_func <4 x float> @_Z30__spirv_ImageSampleExplicitLodIPvDv4_fiET0_T_T1_if(ptr addrspace(4) %6, i32 %5, i32 2, float 0.000000e+00)
2422

2523
; CHECK: %[[#sampled_image:]] = OpSampledImage %[[#sampled_image_t]] %[[#image]] %[[#sampler]]
2624
; CHECK: %[[#]] = OpImageSampleExplicitLod %[[#]] %[[#sampled_image]] %[[#]] {{.*}} %[[#]]

llvm/test/CodeGen/SPIRV/event_no_group_cap.ll

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@
88
; CHECK-NOT: OpCapability Groups
99
; CHECK: OpGroupWaitEvents
1010

11-
%opencl.event_t = type opaque
12-
13-
define dso_local spir_kernel void @test_fn(i8 addrspace(1)* noundef %src) {
14-
entry:
15-
%src.addr = alloca i8 addrspace(1)*, align 8
16-
store i8 addrspace(1)* %src, i8 addrspace(1)** %src.addr, align 8
17-
call spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32 noundef 0, %opencl.event_t* addrspace(4)* noundef null)
11+
define dso_local spir_kernel void @test_fn(ptr addrspace(1) %src) {
12+
%src.addr = alloca ptr addrspace(1), align 8
13+
store ptr addrspace(1) %src, ptr %src.addr, align 8
14+
call spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32 0, ptr addrspace(4) null)
1815
ret void
1916
}
2017

21-
declare spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32 noundef, %opencl.event_t* addrspace(4)* noundef)
18+
declare spir_func void @_Z17wait_group_eventsiPU3AS49ocl_event(i32, ptr addrspace(4))

llvm/test/CodeGen/SPIRV/image-unoptimized.ll

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
; CHECK: %[[#TypeImage:]] = OpTypeImage
44
; CHECK: %[[#TypeSampler:]] = OpTypeSampler
5-
; CHECK-DAG: %[[#TypeImagePtr:]] = OpTypePointer {{.*}} %[[#TypeImage]]
6-
; CHECK-DAG: %[[#TypeSamplerPtr:]] = OpTypePointer {{.*}} %[[#TypeSampler]]
75

86
; CHECK: %[[#srcimg:]] = OpFunctionParameter %[[#TypeImage]]
97
; CHECK: %[[#sampler:]] = OpFunctionParameter %[[#TypeSampler]]
108

11-
; CHECK: %[[#srcimg_addr:]] = OpVariable %[[#TypeImagePtr]]
12-
; CHECK: %[[#sampler_addr:]] = OpVariable %[[#TypeSamplerPtr]]
9+
; CHECK: %[[#srcimg_addr:]] = OpVariable %[[#TypeImage]]
10+
; CHECK: %[[#sampler_addr:]] = OpVariable %[[#TypeSampler]]
1311

1412
; CHECK: OpStore %[[#srcimg_addr]] %[[#srcimg]]
1513
; CHECK: OpStore %[[#sampler_addr]] %[[#sampler]]
@@ -43,38 +41,35 @@
4341
;; results[tid_x + tid_y * get_image_width(srcimg)] = read_imagef(srcimg, sampler, (int2){tid_x, tid_y});
4442
;; }
4543

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) {
5045
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
5348
%results.addr = alloca <4 x float> addrspace(1)*, align 4
5449
%tid_x = alloca i32, align 4
5550
%tid_y = alloca i32, align 4
5651
%.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
5954
store <4 x float> addrspace(1)* %results, <4 x float> addrspace(1)** %results.addr, align 4
6055
%call = call spir_func i32 @_Z13get_global_idj(i32 noundef 0)
6156
store i32 %call, i32* %tid_x, align 4
6257
%call1 = call spir_func i32 @_Z13get_global_idj(i32 noundef 1)
6358
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
6661
%2 = load i32, i32* %tid_x, align 4
6762
%vecinit = insertelement <2 x i32> undef, i32 %2, i32 0
6863
%3 = load i32, i32* %tid_y, align 4
6964
%vecinit2 = insertelement <2 x i32> %vecinit, i32 %3, i32 1
7065
store <2 x i32> %vecinit2, <2 x i32>* %.compoundliteral, align 8
7166
%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)
7368
%5 = load <4 x float> addrspace(1)*, <4 x float> addrspace(1)** %results.addr, align 4
7469
%6 = load i32, i32* %tid_x, align 4
7570
%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)
7873
%mul = mul nsw i32 %7, %call4
7974
%add = add nsw i32 %6, %mul
8075
%arrayidx = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %5, i32 %add
@@ -84,6 +79,6 @@ entry:
8479

8580
declare spir_func i32 @_Z13get_global_idj(i32 noundef)
8681

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)
8883

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))

llvm/test/CodeGen/SPIRV/image.ll

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -O0 -opaque-pointers=0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
1+
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
22

33
; CHECK-SPIRV: %[[#VOID_TY:]] = OpTypeVoid
44
; CHECK-SPIRV-DAG: %[[#]] = OpTypeImage %[[#VOID_TY]] 2D 0 0 0 0 Unknown ReadOnly
@@ -7,25 +7,22 @@
77
; CHECK-SPIRV: OpImageSampleExplicitLod
88
; CHECK-SPIRV: OpImageWrite
99

10-
%opencl.image2d_t = type opaque
11-
12-
define spir_kernel void @image_copy(%opencl.image2d_t addrspace(1)* readnone %image1, %opencl.image2d_t addrspace(1)* %image2) !kernel_arg_access_qual !1 {
13-
entry:
10+
define spir_kernel void @image_copy(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %image1, target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %image2) !kernel_arg_access_qual !1 {
1411
%call = tail call spir_func i64 @_Z13get_global_idj(i32 0)
1512
%conv = trunc i64 %call to i32
1613
%call1 = tail call spir_func i64 @_Z13get_global_idj(i32 1)
1714
%conv2 = trunc i64 %call1 to i32
1815
%vecinit = insertelement <2 x i32> undef, i32 %conv, i32 0
1916
%vecinit3 = insertelement <2 x i32> %vecinit, i32 %conv2, i32 1
20-
%call4 = tail call spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(%opencl.image2d_t addrspace(1)* %image1, i32 20, <2 x i32> %vecinit3)
21-
tail call spir_func void @_Z12write_imagef11ocl_image2dDv2_iDv4_f(%opencl.image2d_t addrspace(1)* %image2, <2 x i32> %vecinit3, <4 x float> %call4)
17+
%call4 = tail call spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %image1, i32 20, <2 x i32> %vecinit3)
18+
tail call spir_func void @_Z12write_imagef11ocl_image2dDv2_iDv4_f(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %image2, <2 x i32> %vecinit3, <4 x float> %call4)
2219
ret void
2320
}
2421

2522
declare spir_func i64 @_Z13get_global_idj(i32)
2623

27-
declare spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(%opencl.image2d_t addrspace(1)*, i32, <2 x i32>)
24+
declare spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), i32, <2 x i32>)
2825

29-
declare spir_func void @_Z12write_imagef11ocl_image2dDv2_iDv4_f(%opencl.image2d_t addrspace(1)*, <2 x i32>, <4 x float>)
26+
declare spir_func void @_Z12write_imagef11ocl_image2dDv2_iDv4_f(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), <2 x i32>, <4 x float>)
3027

3128
!1 = !{!"read_only", !"write_only"}
Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -O0 -opaque-pointers=0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
1+
; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
22

33
; CHECK-SPIRV: %[[#TypeImage:]] = OpTypeImage
44
; CHECK-SPIRV-NOT: OpTypeImage
@@ -9,20 +9,15 @@
99
; CHECK-SPIRV: %[[#ParamID:]] = OpFunctionParameter %[[#TypeImage]]
1010
; CHECK-SPIRV: %[[#]] = OpFunctionCall %[[#]] %[[#]] %[[#ParamID]]
1111

12-
%opencl.image2d_ro_t = type opaque
13-
14-
define spir_func void @f0(%opencl.image2d_ro_t addrspace(1)* %v2, <2 x float> %v3) {
15-
entry:
12+
define spir_func void @f0(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %v2, <2 x float> %v3) {
1613
ret void
1714
}
1815

19-
define spir_func void @f1(%opencl.image2d_ro_t addrspace(1)* %v2, <2 x float> %v3) {
20-
entry:
16+
define spir_func void @f1(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %v2, <2 x float> %v3) {
2117
ret void
2218
}
2319

24-
define spir_kernel void @test(%opencl.image2d_ro_t addrspace(1)* %v1) {
25-
entry:
26-
call spir_func void @f0(%opencl.image2d_ro_t addrspace(1)* %v1, <2 x float> <float 1.000000e+00, float 5.000000e+00>)
20+
define spir_kernel void @test(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %v1) {
21+
call spir_func void @f0(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %v1, <2 x float> <float 1.000000e+00, float 5.000000e+00>)
2722
ret void
2823
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
; RUN: llc -O0 -opaque-pointers=0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
1+
; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV
22

33
; CHECK-SPIRV-DAG: OpCapability Sampled1D
44
; CHECK-SPIRV-DAG: OpCapability SampledBuffer
55

6-
%opencl.image1d_t = type opaque
7-
%opencl.image1d_buffer_t = type opaque
8-
9-
define spir_kernel void @image_d(%opencl.image1d_t addrspace(1)* %image1d_td6, %opencl.image1d_buffer_t addrspace(1)* %image1d_buffer_td8) {
10-
entry:
6+
define spir_kernel void @test_image_dim(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 0) %image1d, target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 0) %image1d_buffer) {
117
ret void
128
}
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,31 @@
1-
; RUN: llc -O0 -opaque-pointers=0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
2-
3-
%opencl.image2d_t = type opaque
1+
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
42

53
; CHECK: OpDecorate %[[#ID:]] LinkageAttributes "imageSampler" Export
64
; CHECK: %[[#ID]] = OpVariable %[[#]] UniformConstant %[[#]]
75

86
@imageSampler = addrspace(2) constant i32 36, align 4
97

10-
define spir_kernel void @sample_kernel(%opencl.image2d_t addrspace(1)* %input, float addrspace(1)* nocapture %xOffsets, float addrspace(1)* nocapture %yOffsets, <4 x float> addrspace(1)* nocapture %results) {
8+
define spir_kernel void @sample_kernel(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %input, ptr addrspace(1) nocapture %xOffsets, ptr addrspace(1) nocapture %yOffsets, ptr addrspace(1) nocapture %results) {
119
%1 = tail call spir_func i64 @_Z13get_global_idj(i32 0)
1210
%2 = trunc i64 %1 to i32
1311
%3 = tail call spir_func i64 @_Z13get_global_idj(i32 1)
1412
%4 = trunc i64 %3 to i32
15-
%5 = tail call spir_func i32 @_Z15get_image_width11ocl_image2d(%opencl.image2d_t addrspace(1)* %input)
13+
%5 = tail call spir_func i32 @_Z15get_image_width11ocl_image2d(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %input)
1614
%6 = mul nsw i32 %4, %5
1715
%7 = add nsw i32 %6, %2
1816
%8 = sitofp i32 %2 to float
1917
%9 = insertelement <2 x float> undef, float %8, i32 0
2018
%10 = sitofp i32 %4 to float
2119
%11 = insertelement <2 x float> %9, float %10, i32 1
22-
%12 = tail call spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_f(%opencl.image2d_t addrspace(1)* %input, i32 36, <2 x float> %11)
20+
%12 = tail call spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_f(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %input, i32 36, <2 x float> %11)
2321
%13 = sext i32 %7 to i64
24-
%14 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %results, i64 %13
25-
store <4 x float> %12, <4 x float> addrspace(1)* %14, align 16
22+
%14 = getelementptr inbounds <4 x float>, ptr addrspace(1) %results, i64 %13
23+
store <4 x float> %12, ptr addrspace(1) %14, align 16
2624
ret void
2725
}
2826

2927
declare spir_func i64 @_Z13get_global_idj(i32)
3028

31-
declare spir_func i32 @_Z15get_image_width11ocl_image2d(%opencl.image2d_t addrspace(1)*)
29+
declare spir_func i32 @_Z15get_image_width11ocl_image2d(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0))
3230

33-
declare spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_f(%opencl.image2d_t addrspace(1)*, i32, <2 x float>)
31+
declare spir_func <4 x float> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_f(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), i32, <2 x float>)

llvm/test/CodeGen/SPIRV/mangled_function.ll

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@
1414
; CHECK-SPIRV: OpName %[[#foo:]] "_Z3foo14ocl_image2d_ro"
1515
; CHECK-SPIRV: %[[#foo]] = OpFunction %[[#]]
1616

17-
%opencl.image2d_ro_t = type opaque
18-
19-
define spir_func void @bar(%opencl.image2d_ro_t addrspace(1)* %srcImage) local_unnamed_addr {
20-
entry:
21-
tail call spir_func void @_Z3foo14ocl_image2d_ro(%opencl.image2d_ro_t addrspace(1)* %srcImage)
17+
define spir_func void @bar(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %srcImage) local_unnamed_addr {
18+
tail call spir_func void @_Z3foo14ocl_image2d_ro(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %srcImage)
2219
ret void
2320
}
2421

25-
declare spir_func void @_Z3foo14ocl_image2d_ro(%opencl.image2d_ro_t addrspace(1)*) local_unnamed_addr
22+
declare spir_func void @_Z3foo14ocl_image2d_ro(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0)) local_unnamed_addr

llvm/test/CodeGen/SPIRV/multi_md.ll

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,29 @@ define spir_kernel void @__OpenCL_writer_kernel(i8 zeroext %c, i32 %i) {
1111
entry:
1212
%c.addr = alloca i8, align 1
1313
%i.addr = alloca i32, align 4
14-
store i8 %c, i8* %c.addr, align 1
15-
store i32 %i, i32* %i.addr, align 4
16-
%0 = load i8, i8* %c.addr, align 1
17-
store i8 %0, i8 addrspace(1)* getelementptr inbounds (%struct.my_struct_t, %struct.my_struct_t addrspace(1)* @var, i32 0, i32 0), align 1
18-
%1 = load i32, i32* %i.addr, align 4
19-
store i32 %1, i32 addrspace(1)* getelementptr inbounds (%struct.my_struct_t, %struct.my_struct_t addrspace(1)* @var, i32 0, i32 1), align 4
14+
store i8 %c, ptr %c.addr, align 1
15+
store i32 %i, ptr %i.addr, align 4
16+
%0 = load i8, ptr %c.addr, align 1
17+
store i8 %0, ptr addrspace(1) @var, align 1
18+
%1 = load i32, ptr %i.addr, align 4
19+
%2 = getelementptr inbounds %struct.my_struct_t, ptr addrspace(1) @var, i32 0, i32 1
20+
store i32 %1, ptr addrspace(1) %2, align 4
2021
ret void
2122
}
2223

23-
define spir_kernel void @__OpenCL_reader_kernel(i8 addrspace(1)* %C, i32 addrspace(1)* %I) {
24+
define spir_kernel void @__OpenCL_reader_kernel(ptr addrspace(1) %C, ptr addrspace(1) %I) {
2425
entry:
25-
%C.addr = alloca i8 addrspace(1)*, align 8
26-
%I.addr = alloca i32 addrspace(1)*, align 8
27-
store i8 addrspace(1)* %C, i8 addrspace(1)** %C.addr, align 8
28-
store i32 addrspace(1)* %I, i32 addrspace(1)** %I.addr, align 8
29-
%0 = load i8, i8 addrspace(1)* getelementptr inbounds (%struct.my_struct_t, %struct.my_struct_t addrspace(1)* @var, i32 0, i32 0), align 1
30-
%1 = load i8 addrspace(1)*, i8 addrspace(1)** %C.addr, align 8
31-
store i8 %0, i8 addrspace(1)* %1, align 1
32-
%2 = load i32, i32 addrspace(1)* getelementptr inbounds (%struct.my_struct_t, %struct.my_struct_t addrspace(1)* @var, i32 0, i32 1), align 4
33-
%3 = load i32 addrspace(1)*, i32 addrspace(1)** %I.addr, align 8
34-
store i32 %2, i32 addrspace(1)* %3, align 4
26+
%C.addr = alloca ptr addrspace(1), align 8
27+
%I.addr = alloca ptr addrspace(1), align 8
28+
store ptr addrspace(1) %C, ptr %C.addr, align 8
29+
store ptr addrspace(1) %I, ptr %I.addr, align 8
30+
%0 = load i8, ptr addrspace(1) @var, align 1
31+
%1 = load ptr addrspace(1), ptr %C.addr, align 8
32+
store i8 %0, ptr addrspace(1) %1, align 1
33+
%2 = getelementptr inbounds %struct.my_struct_t, ptr addrspace(1) @var, i32 0, i32 1
34+
%3 = load i32, ptr addrspace(1) %2, align 4
35+
%4 = load ptr addrspace(1), ptr %I.addr, align 8
36+
store i32 %3, ptr addrspace(1) %4, align 4
3537
ret void
3638
}
3739

llvm/test/CodeGen/SPIRV/no_capability_shader.ll

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44

55
; CHECK-SPIRV-NOT: OpCapability Shader
66

7-
%opencl.image2d_ro_t = type opaque
8-
%opencl.image1d_buffer_ro_t = type opaque
9-
10-
define spir_kernel void @sample_test(%opencl.image2d_ro_t addrspace(1)* %src, %opencl.image1d_buffer_ro_t addrspace(1)* %buf) {
11-
entry:
7+
define spir_kernel void @sample_test(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %src, target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 0) %buf) {
128
ret void
139
}

0 commit comments

Comments
 (0)