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