| 
 | 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 | + | 
 | 6 | +target 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  | 
 | 15 | +define 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  | 
 | 25 | +define 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  | 
 | 35 | +define 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 | +}  | 
0 commit comments