1; RUN: llc < %s -mtriple=amdgcn -mcpu=kaveri | FileCheck -check-prefix=CI -check-prefix=GCN %s 2; RUN: llc < %s -mtriple=amdgcn -mcpu=fiji -mattr=-xnack | FileCheck -check-prefix=VI-NOXNACK -check-prefix=GCN %s 3 4; RUN: llc < %s -mtriple=amdgcn -mcpu=carrizo -mattr=-xnack | FileCheck -check-prefixes=VI-NOXNACK,GCN %s 5; RUN: llc < %s -mtriple=amdgcn -mcpu=stoney -mattr=-xnack | FileCheck -check-prefixes=VI-NOXNACK,GCN %s 6 7; RUN: llc < %s -mtriple=amdgcn -mcpu=carrizo -mattr=+xnack | FileCheck -check-prefix=VI-XNACK -check-prefix=GCN %s 8; RUN: llc < %s -mtriple=amdgcn -mcpu=stoney -mattr=+xnack | FileCheck -check-prefix=VI-XNACK -check-prefix=GCN %s 9 10; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=kaveri | FileCheck -check-prefixes=GCN %s 11; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=carrizo -mattr=-xnack | FileCheck -check-prefixes=VI-NOXNACK,HSA-VI-NOXNACK,GCN %s 12; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=carrizo -mattr=+xnack | FileCheck -check-prefixes=VI-XNACK,HSA-VI-XNACK,GCN %s 13 14; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch | FileCheck -check-prefixes=GCN %s 15; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch,-xnack | FileCheck -check-prefixes=HSA-VI-NOXNACK,GFX9-ARCH-FLAT,GCN %s 16; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch,+xnack | FileCheck -check-prefixes=HSA-VI-XNACK,GFX9-ARCH-FLAT,GCN %s 17 18; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch | FileCheck -check-prefixes=GCN %s 19; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch,-xnack | FileCheck -check-prefixes=HSA-VI-NOXNACK,GFX10-ARCH-FLAT,GCN %s 20; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch,+xnack | FileCheck -check-prefixes=HSA-VI-XNACK,GFX10-ARCH-FLAT,GCN %s 21 22; GCN-LABEL: {{^}}no_vcc_no_flat: 23 24; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 25; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 26; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 27 28; CI: ; TotalNumSgprs: 8 29; VI-NOXNACK: ; TotalNumSgprs: 8 30; VI-XNACK: ; TotalNumSgprs: 12 31; GFX9-ARCH-FLAT: ; TotalNumSgprs: 14 32; GFX10-ARCH-FLAT: ; TotalNumSgprs: 8 33define amdgpu_kernel void @no_vcc_no_flat() { 34entry: 35 call void asm sideeffect "", "~{s7}"() 36 ret void 37} 38 39; GCN-LABEL: {{^}}vcc_no_flat: 40 41; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 42; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 43; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 44 45; CI: ; TotalNumSgprs: 10 46; VI-NOXNACK: ; TotalNumSgprs: 10 47; VI-XNACK: ; TotalNumSgprs: 12 48; GFX9-ARCH-FLAT: ; TotalNumSgprs: 14 49; GFX10-ARCH-FLAT: ; TotalNumSgprs: 10 50define amdgpu_kernel void @vcc_no_flat() { 51entry: 52 call void asm sideeffect "", "~{s7},~{vcc}"() 53 ret void 54} 55 56; GCN-LABEL: {{^}}no_vcc_flat: 57 58; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 59; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 60; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 61 62; CI: ; TotalNumSgprs: 12 63; VI-NOXNACK: ; TotalNumSgprs: 14 64; VI-XNACK: ; TotalNumSgprs: 14 65; GFX9-ARCH-FLAT: ; TotalNumSgprs: 14 66; GFX10-ARCH-FLAT: ; TotalNumSgprs: 8 67define amdgpu_kernel void @no_vcc_flat() { 68entry: 69 call void asm sideeffect "", "~{s7},~{flat_scratch}"() 70 ret void 71} 72 73; GCN-LABEL: {{^}}vcc_flat: 74 75; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 76; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 77; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 78 79; CI: ; TotalNumSgprs: 12 80; VI-NOXNACK: ; TotalNumSgprs: 14 81; VI-XNACK: ; TotalNumSgprs: 14 82; GFX9-ARCH-FLAT: ; TotalNumSgprs: 14 83; GFX10-ARCH-FLAT: ; TotalNumSgprs: 10 84define amdgpu_kernel void @vcc_flat() { 85entry: 86 call void asm sideeffect "", "~{s7},~{vcc},~{flat_scratch}"() 87 ret void 88} 89 90; Make sure used SGPR count for flat_scr is correct when there is no 91; scratch usage and implicit flat uses. 92 93; GCN-LABEL: {{^}}use_flat_scr: 94 95; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 96; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 97; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 98 99; CI: NumSgprs: 4 100; VI-NOXNACK: NumSgprs: 6 101; VI-XNACK: NumSgprs: 6 102; GFX9-ARCH-FLAT: ; TotalNumSgprs: 6 103; GFX10-ARCH-FLAT: ; TotalNumSgprs: 0 104define amdgpu_kernel void @use_flat_scr() #0 { 105entry: 106 call void asm sideeffect "; clobber ", "~{flat_scratch}"() 107 ret void 108} 109 110; GCN-LABEL: {{^}}use_flat_scr_lo: 111 112; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 113; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 114; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 115 116; CI: NumSgprs: 4 117; VI-NOXNACK: NumSgprs: 6 118; VI-XNACK: NumSgprs: 6 119; GFX9-ARCH-FLAT: ; TotalNumSgprs: 6 120; GFX10-ARCH-FLAT: ; TotalNumSgprs: 0 121define amdgpu_kernel void @use_flat_scr_lo() #0 { 122entry: 123 call void asm sideeffect "; clobber ", "~{flat_scratch_lo}"() 124 ret void 125} 126 127; GCN-LABEL: {{^}}use_flat_scr_hi: 128 129; NOT-HSA-CI: .amdhsa_reserve_xnack_mask 130; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0 131; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1 132 133; CI: NumSgprs: 4 134; VI-NOXNACK: NumSgprs: 6 135; VI-XNACK: NumSgprs: 6 136; GFX9-ARCH-FLAT: ; TotalNumSgprs: 6 137; GFX10-ARCH-FLAT: ; TotalNumSgprs: 0 138define amdgpu_kernel void @use_flat_scr_hi() #0 { 139entry: 140 call void asm sideeffect "; clobber ", "~{flat_scratch_hi}"() 141 ret void 142} 143 144attributes #0 = { nounwind } 145 146!llvm.module.flags = !{!0} 147!0 = !{i32 1, !"amdhsa_code_object_version", i32 400} 148