aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll')
-rw-r--r--llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll b/llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll
new file mode 100644
index 0000000..5b3a5d8
--- /dev/null
+++ b/llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll
@@ -0,0 +1,37 @@
+; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
+
+; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
+; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
+
+;CHECK: OpEntryPoint Kernel %[[#KernelId:]]
+;CHECK: %[[#image2d_t:]] = OpTypeImage
+;CHECK: %[[#sampler_t:]] = OpTypeSampler
+;CHECK: %[[#sampled_image_t:]] = OpTypeSampledImage
+
+define spir_func float @test(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %Img, target("spirv.Sampler") %Smp) {
+;CHECK-NOT: %[[#KernelId]] = OpFunction %[[#]]
+;CHECK: OpFunction
+;CHECK: %[[#image:]] = OpFunctionParameter %[[#image2d_t]]
+;CHECK: %[[#sampler:]] = OpFunctionParameter %[[#sampler_t]]
+entry:
+ %call = call spir_func <4 x i32> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %Img, target("spirv.Sampler") %Smp, <2 x i32> zeroinitializer)
+;CHECK: %[[#sampled_image:]] = OpSampledImage %[[#sampled_image_t]] %[[#image]] %[[#sampler]]
+;CHECK: %[[#]] = OpImageSampleExplicitLod %[[#]] %[[#sampled_image]] %[[#]] Lod %[[#]]
+
+ %0 = extractelement <4 x i32> %call, i32 0
+ %conv = sitofp i32 %0 to float
+ ret float %conv
+}
+
+declare spir_func <4 x i32> @_Z11read_imagef11ocl_image2d11ocl_samplerDv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0), i32, <2 x i32>)
+
+define spir_kernel void @test2(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %Img, target("spirv.Sampler") %Smp, ptr addrspace(1) %result) {
+;CHECK: %[[#KernelId]] = OpFunction %[[#]]
+entry:
+ %call = call spir_func float @test(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 0) %Img, target("spirv.Sampler") %Smp)
+ %0 = load float, ptr addrspace(1) %result, align 4
+ %add = fadd float %0, %call
+ store float %add, ptr addrspace(1) %result, align 4
+ ret void
+}