brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 33a967e Raw
55 lines · plain
1; RUN: opt -S -dxil-resource-implicit-binding %s | FileCheck %s2 3; Resources defined (with random order of handlefromimplicitbinding calls):4; RWBuffer<float> A : register(u5);           // defaults to space05; RWBuffer<int> B[];                          // gets u6 (unbounded range)6; RWBuffer<float> C[4] : registcer(space5);    // gets u0 in space57; RWBuffer<int> D[] : register(space5);       // gets u4 in space58; RWBuffer<float> E[3] : register(space10);   // gets u0, space109; StructuredBuffer<int> F : register(space3); // gets t0 in space310 11target triple = "dxil-pc-shadermodel6.6-compute"12 13define void @test_many_spaces() {14 15; RWBuffer<float> A : register(u5);16  %bufA = call target("dx.TypedBuffer", float, 1, 0, 0)17      @llvm.dx.resource.handlefrombinding(i32 0, i32 5, i32 1, i32 0, ptr null)18; no change to llvm.dx.resource.handlefrombinding19; CHECK: %bufA = call target("dx.TypedBuffer", float, 1, 0, 0)20; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0_0t(i32 0, i32 5, i32 1, i32 0, ptr null)21 22; RWBuffer<int> B[];23%bufB = call target("dx.TypedBuffer", i32, 1, 0, 0)24      @llvm.dx.resource.handlefromimplicitbinding(i32 100, i32 0, i32 -1, i32 0, ptr null)25; CHECK: %{{.*}} = call target("dx.TypedBuffer", i32, 1, 0, 0)26; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0_0t(i32 0, i32 6, i32 -1, i32 0, ptr null)27 28; RWBuffer<float> C[4] : register(space5);29%bufC = call target("dx.TypedBuffer", i32, 1, 0, 0)30      @llvm.dx.resource.handlefromimplicitbinding(i32 101, i32 5, i32 4, i32 0, ptr null)31; CHECK: %{{.*}} = call target("dx.TypedBuffer", i32, 1, 0, 0)32; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0_0t(i32 5, i32 0, i32 4, i32 0, ptr null)33 34; RWBuffer<int> D[] : register(space5);35  %bufD = call target("dx.TypedBuffer", i32, 1, 0, 0)36      @llvm.dx.resource.handlefromimplicitbinding(i32 102, i32 5, i32 -1, i32 0, ptr null)37; CHECK: %{{.*}} = call target("dx.TypedBuffer", i32, 1, 0, 0)38; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0_0t(i32 5, i32 4, i32 -1, i32 0, ptr null)39 40; RWBuffer<float> E[3] : register(space10); // gets u0, space1041%bufE = call target("dx.TypedBuffer", float, 1, 0, 0)42      @llvm.dx.resource.handlefromimplicitbinding(i32 103, i32 10, i32 4, i32 0, ptr null)43; CHECK: %{{.*}} = call target("dx.TypedBuffer", float, 1, 0, 0)44; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0_0t(i32 10, i32 0, i32 4, i32 0, ptr null)45 46; StructuredBuffer<int> F : register(space3); // gets t0 in space347%bufF = call target("dx.RawBuffer", i32, 0, 0)48      @llvm.dx.resource.handlefromimplicitbinding(i32 104, i32 3, i32 1, i32 0, ptr null)49; CHECK: %{{.*}} = call target("dx.RawBuffer", i32, 0, 0)50; CHECK-SAME: @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i32_0_0t(i32 3, i32 0, i32 1, i32 0, ptr null)51 52; CHECK-NOT: @llvm.dx.resource.handlefromimplicitbinding53  ret void54}55