1
1
; RUN: llvm-as -opaque-pointers=0 %s -o %t.bc
2
2
; RUN: llvm-spirv %t.bc -opaque-pointers=0 -o %t.spv --spirv-ext=+SPV_INTEL_vector_compute --spirv-allow-unknown-intrinsics
3
3
; RUN: llvm-spirv %t.spv -o %t.spt --to-text
4
- ; RUN: llvm-spirv -r %t.spv -o %t.bc
5
- ; RUN: llvm-dis -opaque-pointers=0 %t.bc -o %t.ll
4
+ ; RUN: llvm-spirv -r %t.spv -o %t.bc --spirv-target-env=SPV-IR -emit-opaque-pointers
5
+ ; RUN: llvm-dis %t.bc -o %t.ll
6
6
; RUN: FileCheck %s --input-file %t.spt -check-prefix=SPV
7
7
; RUN: FileCheck %s --input-file %t.ll -check-prefix=LLVM
8
8
9
9
target triple = "spir"
10
10
11
- ; LLVM-DAG: %intel.buffer_ro_t = type opaque
12
- ; LLVM-DAG: %intel.buffer_wo_t = type opaque
13
- ; LLVM-DAG: %intel.buffer_rw_t = type opaque
14
- ; LLVM-DAG: %opencl.image1d_rw_t = type opaque
15
- ; LLVM-DAG: %opencl.image1d_buffer_wo_t = type opaque
16
- ; LLVM-DAG: %opencl.image2d_wo_t = type opaque
17
- ; LLVM-DAG: %opencl.image3d_ro_t = type opaque
18
11
%intel.buffer_ro_t = type opaque
19
12
%intel.buffer_wo_t = type opaque
20
13
%intel.buffer_rw_t = type opaque
@@ -23,13 +16,13 @@ target triple = "spir"
23
16
%opencl.image2d_wo_t = type opaque
24
17
%opencl.image3d_ro_t = type opaque
25
18
26
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t(%intel.buffer_ro_t addrspace(1)* )
27
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t(%intel.buffer_wo_t addrspace(1)* )
28
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_rw_t(%intel.buffer_rw_t addrspace(1)* )
29
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_rw_t(%opencl.image1d_rw_t addrspace(1)* )
30
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_buffer_wo_t(%opencl.image1d_buffer_wo_t addrspace(1)* )
31
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image2d_wo_t(%opencl.image2d_wo_t addrspace(1)* )
32
- ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image3d_ro_t(%opencl.image3d_ro_t addrspace(1)* )
19
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t(target("spirv.BufferSurfaceINTEL", 0) )
20
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t(target("spirv.BufferSurfaceINTEL", 1) )
21
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_rw_t(target("spirv.BufferSurfaceINTEL", 2) )
22
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_rw_t(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 2) )
23
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_buffer_wo_t(target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 1) )
24
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image2d_wo_t(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) )
25
+ ; LLVM-DAG: declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image3d_ro_t(target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0) )
33
26
34
27
declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t (%intel.buffer_ro_t addrspace (1 )*)
35
28
declare i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t (%intel.buffer_wo_t addrspace (1 )*)
@@ -57,16 +50,16 @@ declare i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image3d_ro_t(%opencl.image
57
50
; SPV-DAG: TypeFunction {{[0-9]+}} [[INT]] [[IMAGE3D_RO]]{{(^|[^0-9])}}
58
51
; SPV-DAG: TypeFunction {{[0-9]+}} [[VOID]] [[BUFRO]] [[BUFWO]] [[BUFRW]] [[IMAGE1D_RW]] [[IMAGE1D_BUF_WO]] [[IMAGE2D_WO]] [[IMAGE3D_RO]]{{(^|[^0-9])}}
59
52
60
- ; LLVM-DAG: define spir_kernel void @test(%intel.buffer_ro_t addrspace(1)* %buf_ro, %intel.buffer_wo_t addrspace(1)* %buf_wo, %intel.buffer_rw_t addrspace(1)* %buf_rw, %opencl.image1d_rw_t addrspace(1)* %im1d, %opencl.image1d_buffer_wo_t addrspace(1)* %im1db, %opencl.image2d_wo_t addrspace(1)* %im2d, %opencl.image3d_ro_t addrspace(1)* %im3d)
53
+ ; LLVM-DAG: define spir_kernel void @test(target("spirv.BufferSurfaceINTEL", 0) %buf_ro, target("spirv.BufferSurfaceINTEL", 1) %buf_wo, target("spirv.BufferSurfaceINTEL", 2) %buf_rw, target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 2) %im1d, target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 1) %im1db, target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) %im2d, target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0) %im3d)
61
54
define spir_kernel void @test (%intel.buffer_ro_t addrspace (1 )* %buf_ro , %intel.buffer_wo_t addrspace (1 )* %buf_wo , %intel.buffer_rw_t addrspace (1 )* %buf_rw , %opencl.image1d_rw_t addrspace (1 )* %im1d , %opencl.image1d_buffer_wo_t addrspace (1 )* %im1db , %opencl.image2d_wo_t addrspace (1 )* %im2d , %opencl.image3d_ro_t addrspace (1 )* %im3d ) #0 {
62
55
entry:
63
- ; LLVM: %0 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t(%intel.buffer_ro_t addrspace(1)* %buf_ro)
64
- ; LLVM: %1 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t(%intel.buffer_wo_t addrspace(1)* %buf_wo)
65
- ; LLVM: %2 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_rw_t(%intel.buffer_rw_t addrspace(1)* %buf_rw)
66
- ; LLVM: %3 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_rw_t(%opencl.image1d_rw_t addrspace(1)* %im1d)
67
- ; LLVM: %4 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_buffer_wo_t(%opencl.image1d_buffer_wo_t addrspace(1)* %im1db)
68
- ; LLVM: %5 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image2d_wo_t(%opencl.image2d_wo_t addrspace(1)* %im2d)
69
- ; LLVM: %6 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image3d_ro_t(%opencl.image3d_ro_t addrspace(1)* %im3d)
56
+ ; LLVM: %0 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t(target("spirv.BufferSurfaceINTEL", 0) %buf_ro)
57
+ ; LLVM: %1 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t(target("spirv.BufferSurfaceINTEL", 1) %buf_wo)
58
+ ; LLVM: %2 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_rw_t(target("spirv.BufferSurfaceINTEL", 2) %buf_rw)
59
+ ; LLVM: %3 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_rw_t(target("spirv.Image", void, 0, 0, 0, 0, 0, 0, 2) %im1d)
60
+ ; LLVM: %4 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image1d_buffer_wo_t(target("spirv.Image", void, 5, 0, 0, 0, 0, 0, 1) %im1db)
61
+ ; LLVM: %5 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image2d_wo_t(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 1) %im2d)
62
+ ; LLVM: %6 = call i32 @llvm.some.unknown.intrinsic.i32.p1opencl.image3d_ro_t(target("spirv.Image", void, 2, 0, 0, 0, 0, 0, 0) %im3d)
70
63
; LLVM: ret void
71
64
%0 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_ro_t (%intel.buffer_ro_t addrspace (1 )* %buf_ro )
72
65
%1 = call i32 @llvm.some.unknown.intrinsic.i32.p1intel.buffer_wo_t (%intel.buffer_wo_t addrspace (1 )* %buf_wo )
0 commit comments