blob: f54bc1033ec05706d25627bdc16f72eb4a76f93d [file] [edit]
; RUN: opt -S --passes="print-dx-shader-flags" 2>&1 %s | FileCheck %s
; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s --check-prefix=DXC
target triple = "dxil-pc-shadermodel6.6-compute"
; 64-bit atomic on groupshared memory (address space 3) should set both
; Int64Ops (bit 20) and AtomicInt64OnGroupShared (bit 28), yielding 0x10100000.
@gsm = internal addrspace(3) global i64 zeroinitializer, align 8
; CHECK: ; Combined Shader Flags for Module
; CHECK-NEXT: ; Shader Flags Value: 0x10100000
; CHECK-NEXT: ;
; CHECK-NEXT: ; Note: shader requires additional functionality:
; CHECK-NEXT: ; 64-Bit integer
; CHECK-NEXT: ; 64-bit Atomics on Group Shared
; CHECK-NEXT: ; Note: extra DXIL module flags:
; CHECK-NEXT: ;
; CHECK-NEXT: ; Shader Flags for Module Functions
; CHECK: Function main : 0x10100000
define void @main() #0 {
%old = atomicrmw add ptr addrspace(3) @gsm, i64 1 monotonic
ret void
}
attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
; DXC: - Name: SFI0
; DXC-NEXT: Size: 8
; DXC-NEXT: Flags:
; DXC: Int64Ops: true
; DXC: AtomicInt64OnGroupShared: true
; DXC: ...