| ; RUN: opt -S -passes=spirv-legalize-implicit-binding -mtriple=spirv1.6-vulkan1.3-library < %s | FileCheck %s |
| |
| @.str.b = private unnamed_addr constant [2 x i8] c"b\00", align 1 |
| @.str.c = private unnamed_addr constant [2 x i8] c"c\00", align 1 |
| |
| ; Verify implicit-binding intrinsic calls are rewritten to explicit |
| ; handlefrombinding intrinsic calls; the descriptor set is preserved |
| ; (1st operand of the original) and a new binding number is assigned. |
| |
| define void @main() local_unnamed_addr #0 { |
| entry: |
| ; CHECK-LABEL: define void @main( |
| ; CHECK: call target({{.*}}) @llvm.spv.resource.handlefrombinding{{.*}}(i32 0, i32 0, i32 1, i32 0, ptr {{.*}}@.str.b) |
| ; CHECK: call target({{.*}}) @llvm.spv.resource.handlefrombinding{{.*}}(i32 1, i32 0, i32 1, i32 0, ptr {{.*}}@.str.c) |
| %0 = tail call target("spirv.SignedImage", i32, 5, 2, 0, 0, 2, 0) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t(i32 0, i32 0, i32 1, i32 0, ptr nonnull @.str.b) |
| %1 = tail call target("spirv.SignedImage", i32, 5, 2, 0, 0, 2, 0) @llvm.spv.resource.handlefromimplicitbinding.tspirv.SignedImage_i32_5_2_0_0_2_0t(i32 1, i32 1, i32 1, i32 0, ptr nonnull @.str.c) |
| ret void |
| } |
| |
| attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } |