1; Test the generation of the attribute amdgpu-no-flat-scratch-init 2; RUN: opt -S -O2 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 %s | llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -global-isel -stop-after=irtranslator | FileCheck -check-prefixes=GFX10 %s 3 4;; tests of addrspacecast 5 6define void @without_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) { 7 store volatile i32 0, ptr addrspace(1) %ptr 8 ret void 9} 10 11define amdgpu_kernel void @without_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) { 12 store volatile i32 0, ptr addrspace(1) %ptr 13 ret void 14} 15 16define void @with_global_to_flat_addrspacecast(ptr addrspace(1) %ptr) { 17 %stof = addrspacecast ptr addrspace(1) %ptr to ptr 18 store volatile i32 0, ptr %stof 19 ret void 20} 21 22define amdgpu_kernel void @with_global_to_flat_addrspacecast_cc_kernel(ptr addrspace(1) %ptr) { 23 %stof = addrspacecast ptr addrspace(1) %ptr to ptr 24 store volatile i32 0, ptr %stof 25 ret void 26} 27 28define void @without_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) { 29 store volatile i32 0, ptr addrspace(2) %ptr 30 ret void 31} 32 33define amdgpu_kernel void @without_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) { 34 store volatile i32 0, ptr addrspace(2) %ptr 35 ret void 36} 37 38define void @with_region_to_flat_addrspacecast(ptr addrspace(2) %ptr) { 39 %stof = addrspacecast ptr addrspace(2) %ptr to ptr 40 store volatile i32 0, ptr %stof 41 ret void 42} 43 44define amdgpu_kernel void @with_region_to_flat_addrspacecast_cc_kernel(ptr addrspace(2) %ptr) { 45 %stof = addrspacecast ptr addrspace(2) %ptr to ptr 46 store volatile i32 0, ptr %stof 47 ret void 48} 49 50define void @without_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) { 51 store volatile i32 0, ptr addrspace(3) %ptr 52 ret void 53} 54 55define amdgpu_kernel void @without_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) { 56 store volatile i32 0, ptr addrspace(3) %ptr 57 ret void 58} 59 60define void @with_group_to_flat_addrspacecast(ptr addrspace(3) %ptr) { 61 %stof = addrspacecast ptr addrspace(3) %ptr to ptr 62 store volatile i32 0, ptr %stof 63 ret void 64} 65 66define amdgpu_kernel void @with_group_to_flat_addrspacecast_cc_kernel(ptr addrspace(3) %ptr) { 67 %stof = addrspacecast ptr addrspace(3) %ptr to ptr 68 store volatile i32 0, ptr %stof 69 ret void 70} 71 72define void @without_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) { 73 store volatile i32 0, ptr addrspace(4) %ptr 74 ret void 75} 76 77define amdgpu_kernel void @without_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) { 78 store volatile i32 0, ptr addrspace(4) %ptr 79 ret void 80} 81 82define void @with_constant_to_flat_addrspacecast(ptr addrspace(4) %ptr) { 83 %stof = addrspacecast ptr addrspace(4) %ptr to ptr 84 store volatile i32 0, ptr %stof 85 ret void 86} 87 88define amdgpu_kernel void @with_constant_to_flat_addrspacecast_cc_kernel(ptr addrspace(4) %ptr) { 89 %stof = addrspacecast ptr addrspace(4) %ptr to ptr 90 store volatile i32 0, ptr %stof 91 ret void 92} 93 94define void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 95 store volatile i32 0, ptr addrspace(5) %ptr 96 ret void 97} 98 99define amdgpu_kernel void @without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 100 store volatile i32 0, ptr addrspace(5) %ptr 101 ret void 102} 103 104define void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 105 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 106 store volatile i32 0, ptr %stof 107 ret void 108} 109 110define amdgpu_kernel void @with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 111 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 112 store volatile i32 0, ptr %stof 113 ret void 114} 115 116define void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 117 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 118 ret void 119} 120 121define amdgpu_kernel void @call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 122 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 123 ret void 124} 125 126define void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 127 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 128 ret void 129} 130 131define amdgpu_kernel void @call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 132 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 133 ret void 134} 135 136define void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 137 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 138 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 139 ret void 140} 141 142define amdgpu_kernel void @call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 143 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 144 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 145 ret void 146} 147 148define void @call_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 149 call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 150 ret void 151} 152 153define amdgpu_kernel void @call_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 154 call void @call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 155 ret void 156} 157 158define void @call_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 159 call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 160 ret void 161} 162 163define amdgpu_kernel void @call_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 164 call void @call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 165 ret void 166} 167 168define void @call_call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 169 call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 170 ret void 171} 172 173define amdgpu_kernel void @call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 174 call void @call_both_with_and_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 175 ret void 176} 177 178define void @with_cast_call_without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 179 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 180 store volatile i32 0, ptr %stof 181 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 182 ret void 183} 184 185define amdgpu_kernel void @with_cast_call_without_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 186 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 187 store volatile i32 0, ptr %stof 188 call void @without_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 189 ret void 190} 191 192define void @with_cast_call_with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) { 193 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 194 store volatile i32 0, ptr %stof 195 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 196 ret void 197} 198 199define amdgpu_kernel void @with_cast_call_with_private_to_flat_addrspacecast_cc_kernel(ptr addrspace(5) %ptr) { 200 %stof = addrspacecast ptr addrspace(5) %ptr to ptr 201 store volatile i32 0, ptr %stof 202 call void @with_private_to_flat_addrspacecast(ptr addrspace(5) %ptr) 203 ret void 204} 205 206;; tests of indirect call, intrinsics 207 208@gv.fptr0 = external hidden unnamed_addr addrspace(4) constant ptr, align 4 209 210define void @with_indirect_call() { 211 %fptr = load ptr, ptr addrspace(4) @gv.fptr0 212 call void %fptr() 213 ret void 214} 215 216define amdgpu_kernel void @with_indirect_call_cc_kernel() { 217 %fptr = load ptr, ptr addrspace(4) @gv.fptr0 218 call void %fptr() 219 ret void 220} 221 222define void @call_with_indirect_call() { 223 call void @with_indirect_call() 224 ret void 225} 226 227define amdgpu_kernel void @call_with_indirect_call_cc_kernel() { 228 call void @with_indirect_call() 229 ret void 230} 231 232declare i32 @llvm.amdgcn.workgroup.id.x() 233 234define void @use_intrinsic_workitem_id_x() { 235 %val = call i32 @llvm.amdgcn.workitem.id.x() 236 store volatile i32 %val, ptr addrspace(1) null 237 ret void 238} 239 240define amdgpu_kernel void @use_intrinsic_workitem_id_x_cc_kernel() { 241 %val = call i32 @llvm.amdgcn.workitem.id.x() 242 store volatile i32 %val, ptr addrspace(1) null 243 ret void 244} 245 246define void @call_use_intrinsic_workitem_id_x() { 247 call void @use_intrinsic_workitem_id_x() 248 ret void 249} 250 251define amdgpu_kernel void @call_use_intrinsic_workitem_id_x_cc_kernel() { 252 call void @use_intrinsic_workitem_id_x() 253 ret void 254} 255 256; GFX10: name: without_global_to_flat_addrspacecast 257; GFX10: argumentInfo: 258; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 259; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 260; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 261; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 262; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 263; 264; GFX10: name: without_global_to_flat_addrspacecast_cc_kernel 265; GFX10: argumentInfo: 266; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 267; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 268; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 269; 270; GFX10: name: with_global_to_flat_addrspacecast 271; GFX10: argumentInfo: 272; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 273; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 274; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 275; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 276; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 277; 278; GFX10: name: with_global_to_flat_addrspacecast_cc_kernel 279; GFX10: argumentInfo: 280; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 281; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 282; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 283; GFX10-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } 284; 285; GFX10: name: without_region_to_flat_addrspacecast 286; GFX10: argumentInfo: 287; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 288; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 289; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 290; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 291; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 292; 293; GFX10: name: without_region_to_flat_addrspacecast_cc_kernel 294; GFX10: argumentInfo: 295; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 296; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 297; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 298; 299; GFX10: name: with_region_to_flat_addrspacecast 300; GFX10: argumentInfo: 301; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 302; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 303; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 304; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 305; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 306; 307; GFX10: name: with_region_to_flat_addrspacecast_cc_kernel 308; GFX10: argumentInfo: 309; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 310; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 311; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 312; 313; GFX10: name: without_group_to_flat_addrspacecast 314; GFX10: argumentInfo: 315; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 316; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 317; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 318; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 319; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 320; 321; GFX10: name: without_group_to_flat_addrspacecast_cc_kernel 322; GFX10: argumentInfo: 323; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 324; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 325; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 326; 327; GFX10: name: with_group_to_flat_addrspacecast 328; GFX10: argumentInfo: 329; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 330; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 331; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 332; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 333; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 334; 335; GFX10: name: with_group_to_flat_addrspacecast_cc_kernel 336; GFX10: argumentInfo: 337; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 338; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 339; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 340; 341; GFX10: name: without_constant_to_flat_addrspacecast 342; GFX10: argumentInfo: 343; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 344; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 345; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 346; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 347; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 348; 349; GFX10: name: without_constant_to_flat_addrspacecast_cc_kernel 350; GFX10: argumentInfo: 351; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 352; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 353; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 354; 355; GFX10: name: with_constant_to_flat_addrspacecast 356; GFX10: argumentInfo: 357; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 358; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 359; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 360; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 361; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 362; 363; GFX10: name: with_constant_to_flat_addrspacecast_cc_kernel 364; GFX10: argumentInfo: 365; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 366; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 367; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 368; 369; GFX10: name: without_private_to_flat_addrspacecast 370; GFX10: argumentInfo: 371; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 372; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 373; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 374; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 375; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 376; 377; GFX10: name: without_private_to_flat_addrspacecast_cc_kernel 378; GFX10: argumentInfo: 379; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 380; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 381; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 382; 383; GFX10: name: with_private_to_flat_addrspacecast 384; GFX10: argumentInfo: 385; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 386; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 387; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 388; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 389; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 390; 391; GFX10: name: with_private_to_flat_addrspacecast_cc_kernel 392; GFX10: argumentInfo: 393; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 394; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 395; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 396; 397; GFX10: name: call_without_private_to_flat_addrspacecast 398; GFX10: argumentInfo: 399; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 400; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 401; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 402; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 403; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 404; 405; GFX10: name: call_without_private_to_flat_addrspacecast_cc_kernel 406; GFX10: argumentInfo: 407; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 408; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 409; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 410; 411; GFX10: name: call_with_private_to_flat_addrspacecast 412; GFX10: argumentInfo: 413; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 414; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 415; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 416; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 417; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 418; 419; GFX10: name: call_with_private_to_flat_addrspacecast_cc_kernel 420; GFX10: argumentInfo: 421; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 422; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 423; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 424; 425; GFX10: name: call_both_with_and_without_private_to_flat_addrspacecast 426; GFX10: argumentInfo: 427; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 428; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 429; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 430; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 431; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 432; 433; GFX10: name: call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel 434; GFX10: argumentInfo: 435; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 436; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 437; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 438; 439; GFX10: name: call_call_without_private_to_flat_addrspacecast 440; GFX10: argumentInfo: 441; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 442; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 443; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 444; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 445; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 446; 447; GFX10: name: call_call_without_private_to_flat_addrspacecast_cc_kernel 448; GFX10: argumentInfo: 449; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 450; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 451; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 452; 453; GFX10: name: call_call_with_private_to_flat_addrspacecast 454; GFX10: argumentInfo: 455; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 456; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 457; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 458; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 459; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 460; 461; GFX10: name: call_call_with_private_to_flat_addrspacecast_cc_kernel 462; GFX10: argumentInfo: 463; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 464; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 465; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 466; 467; GFX10: name: call_call_both_with_and_without_private_to_flat_addrspacecast 468; GFX10: argumentInfo: 469; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 470; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 471; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 472; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 473; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 474; 475; GFX10: name: call_call_both_with_and_without_private_to_flat_addrspacecast_cc_kernel 476; GFX10: argumentInfo: 477; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 478; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 479; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 480; 481; GFX10: name: with_cast_call_without_private_to_flat_addrspacecast 482; GFX10: argumentInfo: 483; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 484; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 485; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 486; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 487; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 488; 489; GFX10: name: with_cast_call_without_private_to_flat_addrspacecast_cc_kernel 490; GFX10: argumentInfo: 491; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 492; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 493; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 494; 495; GFX10: name: with_cast_call_with_private_to_flat_addrspacecast 496; GFX10: argumentInfo: 497; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 498; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 499; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 500; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 501; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 502; 503; GFX10: name: with_cast_call_with_private_to_flat_addrspacecast_cc_kernel 504; GFX10: argumentInfo: 505; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 506; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 507; GFX10-NEXT: workGroupIDX: { reg: '$sgpr6' } 508; 509; GFX10: name: with_indirect_call 510; GFX10: argumentInfo: 511; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 512; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 513; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 514; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 515; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 516; 517; GFX10: name: with_indirect_call_cc_kernel 518; GFX10: argumentInfo: 519; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 520; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 521; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 522; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } 523; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 524; GFX10-NEXT: flatScratchInit: { reg: '$sgpr12_sgpr13' } 525; GFX10-NEXT: workGroupIDX: { reg: '$sgpr14' } 526; 527; GFX10: name: call_with_indirect_call 528; GFX10: argumentInfo: 529; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 530; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 531; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 532; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 533; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 534; 535; GFX10: name: call_with_indirect_call_cc_kernel 536; GFX10: argumentInfo: 537; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 538; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 539; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 540; GFX10-NEXT: kernargSegmentPtr: { reg: '$sgpr8_sgpr9' } 541; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 542; GFX10-NEXT: flatScratchInit: { reg: '$sgpr12_sgpr13' } 543; GFX10-NEXT: workGroupIDX: { reg: '$sgpr14' } 544 545; 546; GFX10: name: use_intrinsic_workitem_id_x 547; GFX10: argumentInfo: 548; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 549; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 550; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 551; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 552; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 553; 554; GFX10: name: use_intrinsic_workitem_id_x_cc_kernel 555; GFX10: argumentInfo: 556; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 557; GFX10-NEXT: workGroupIDX: { reg: '$sgpr4' } 558; 559; GFX10: name: call_use_intrinsic_workitem_id_x 560; GFX10: argumentInfo: 561; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 562; GFX10-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 563; GFX10-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 564; GFX10-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 565; GFX10-NEXT: workGroupIDX: { reg: '$sgpr12' } 566; 567; GFX10: name: call_use_intrinsic_workitem_id_x_cc_kernel 568; GFX10: argumentInfo: 569; GFX10-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 570; GFX10-NEXT: workGroupIDX: { reg: '$sgpr4' } 571