| ; 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: ... |