diff options
Diffstat (limited to 'llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll')
-rw-r--r-- | llvm/test/CodeGen/SPIRV/SamplerArgNonKernel.ll | 37 |
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 +} |