43 lines · plain
1; RUN: opt -S --passes="print-dx-shader-flags" 2>&1 %s | FileCheck %s2 3; Note: there is no feature flag here (only a module flag), so we don't have an4; object test.5 6target triple = "dxil-pc-shadermodel6.7-library"7 8; CHECK: Combined Shader Flags for Module9; CHECK-NEXT: Shader Flags Value: 0x0000001010 11; CHECK: Note: shader requires additional functionality:12; CHECK: Raw and structured buffers13 14; CHECK: Function rawbuf : 0x0000001015define float @rawbuf() "hlsl.export" {16 %buffer = call target("dx.RawBuffer", i8, 0, 0, 0)17 @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)18 %load = call {float, i1} @llvm.dx.resource.load.rawbuffer.f32(19 target("dx.RawBuffer", i8, 0, 0, 0) %buffer, i32 0, i32 0)20 %data = extractvalue {float, i1} %load, 021 ret float %data22}23 24; CHECK: Function structbuf : 0x0000001025define float @structbuf() "hlsl.export" {26 %buffer = call target("dx.RawBuffer", float, 0, 0, 0)27 @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)28 %load = call {float, i1} @llvm.dx.resource.load.rawbuffer.f32(29 target("dx.RawBuffer", float, 0, 0, 0) %buffer, i32 0, i32 0)30 %data = extractvalue {float, i1} %load, 031 ret float %data32}33 34; CHECK: Function typedbuf : 0x0000000035define float @typedbuf(<4 x float> %val) "hlsl.export" {36 %buffer = call target("dx.TypedBuffer", float, 0, 0, 0)37 @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)38 %load = call {float, i1} @llvm.dx.resource.load.typedbuffer(39 target("dx.TypedBuffer", float, 0, 0, 0) %buffer, i32 0)40 %data = extractvalue {float, i1} %load, 041 ret float %data42}43