1; RUN: opt -S --passes="print-dx-shader-flags" 2>&1 %s | FileCheck %s 2 3; Note: there is no feature flag here (only a module flag), so we don't have an 4; object test. 5 6target triple = "dxil-pc-shadermodel6.7-library" 7 8; CHECK: Combined Shader Flags for Module 9; CHECK-NEXT: Shader Flags Value: 0x00000010 10 11; CHECK: Note: shader requires additional functionality: 12; CHECK: Raw and Structured buffers 13 14; CHECK: Function rawbuf : 0x00000010 15define 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, i1 false) 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, 0 21 ret float %data 22} 23 24; CHECK: Function structbuf : 0x00000010 25define 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, i1 false) 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, 0 31 ret float %data 32} 33 34; CHECK: Function typedbuf : 0x00000000 35define 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, i1 false) 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, 0 41 ret float %data 42} 43