xref: /llvm-project/llvm/test/CodeGen/DirectX/BufferStore-errors.ll (revision aa07f922103ebe8e78c8da4c754b43af3c129f3e)
1; We use llc for this test so that we don't abort after the first error.
2; RUN: not llc %s -o /dev/null 2>&1 | FileCheck %s
3
4target triple = "dxil-pc-shadermodel6.6-compute"
5
6; CHECK: error:
7; CHECK-SAME: in function storetoomany
8; CHECK-SAME: typedBufferStore data must be a vector of 4 elements
9define void @storetoomany(<5 x float> %data, i32 %index) "hlsl.export" {
10  %buffer = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
11      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_v4f32_1_0_0(
12          i32 0, i32 0, i32 1, i32 0, i1 false)
13
14  call void @llvm.dx.resource.store.typedbuffer.tdx.TypedBuffer_v4f32_1_0_0t.v5f32(
15      target("dx.TypedBuffer", <4 x float>, 1, 0, 0) %buffer,
16      i32 %index, <5 x float> %data)
17
18  ret void
19}
20
21; CHECK: error:
22; CHECK-SAME: in function storetoofew
23; CHECK-SAME: typedBufferStore data must be a vector of 4 elements
24define void @storetoofew(<3 x i32> %data, i32 %index) "hlsl.export" {
25  %buffer = call target("dx.TypedBuffer", <4 x i32>, 1, 0, 0)
26      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_v4i32_1_0_0(
27          i32 0, i32 0, i32 1, i32 0, i1 false)
28
29  call void @llvm.dx.resource.store.typedbuffer.tdx.TypedBuffer_v4i32_1_0_0t.v3i32(
30      target("dx.TypedBuffer", <4 x i32>, 1, 0, 0) %buffer,
31      i32 %index, <3 x i32> %data)
32
33  ret void
34}
35
36declare void @llvm.dx.resource.store.typedbuffer.tdx.TypedBuffer_v4f32_1_0_0t.v5f32(target("dx.TypedBuffer", <4 x float>, 1, 0, 0), i32, <5 x float>)
37declare void @llvm.dx.resource.store.typedbuffer.tdx.TypedBuffer_v4i32_1_0_0t.v3i32(target("dx.TypedBuffer", <4 x i32>, 1, 0, 0), i32, <3 x i32>)
38