xref: /llvm-project/clang/test/CodeGenHLSL/builtins/RWBuffer-constructor.hlsl (revision 719f0d92538c917306004e541f38c79717d0c07d)
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
2// FIXME: SPIR-V codegen of llvm.spv.resource.handlefrombinding is not yet implemented
3// RUN-DISABLED: %clang_cc1 -triple spirv-vulkan-library -x hlsl -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
4
5// NOTE: SPIRV codegen for resource types is not yet implemented
6
7RWBuffer<float> Buf : register(u5, space3);
8
9// CHECK: %"class.hlsl::RWBuffer" = type { target("dx.TypedBuffer", float, 1, 0, 0) }
10// CHECK: @Buf = global %"class.hlsl::RWBuffer" zeroinitializer, align 4
11
12// CHECK: define internal void @_init_resource_Buf()
13// CHECK-DXIL: %Buf_h = call target("dx.TypedBuffer", float, 1, 0, 0) @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0_0t(i32 3, i32 5, i32 1, i32 0, i1 false)
14// CHECK-DXIL: store target("dx.TypedBuffer", float, 1, 0, 0) %Buf_h, ptr @Buf, align 4
15
16// CHECK: define linkonce_odr void @_ZN4hlsl8RWBufferIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %this)
17// CHECK-NEXT: entry:
18
19// CHECK: define internal void @_GLOBAL__sub_I_RWBuffer_constructor.hlsl()
20// CHECK: call void @_init_resource_Buf()
21