127 lines · plain
1; RUN: opt -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -passes=amdgpu-attributor < %s | llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -amdgpu-ir-lower-kernel-arguments=0 -stop-after=irtranslator -o - | FileCheck -check-prefix=HSA %s2 3; HSA-LABEL: name: default_kernel4; HSA: liveins:5; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }6; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }7; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }8; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }9; HSA-NEXT: frameInfo:10define amdgpu_kernel void @default_kernel() {11 ret void12}13 14 15; HSA-LABEL: name: workgroup_id_x{{$}}16; HSA: liveins:17; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }18; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }19; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }20; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }21; HSA-NEXT: frameInfo:22define amdgpu_kernel void @workgroup_id_x() {23 %id = call i32 @llvm.amdgcn.workgroup.id.x()24 store volatile i32 %id, ptr addrspace(1) poison25 ret void26}27 28; HSA-LABEL: name: workgroup_id_y{{$}}29; HSA: liveins:30; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }31; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }32; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }33; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }34; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }35; HSA-NEXT: frameInfo:36define amdgpu_kernel void @workgroup_id_y() {37 %id = call i32 @llvm.amdgcn.workgroup.id.y()38 store volatile i32 %id, ptr addrspace(1) poison39 ret void40}41 42; HSA-LABEL: name: workgroup_id_z{{$}}43; HSA: liveins:44; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }45; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }46; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }47; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }48; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }49; HSA-NEXT: frameInfo:50define amdgpu_kernel void @workgroup_id_z() {51 %id = call i32 @llvm.amdgcn.workgroup.id.z()52 store volatile i32 %id, ptr addrspace(1) poison53 ret void54}55 56; HSA-LABEL: name: workgroup_id_xy{{$}}57; HSA: liveins:58; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }59; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }60; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }61; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }62; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }63; HSA-NEXT: frameInfo:64define amdgpu_kernel void @workgroup_id_xy() {65 %id0 = call i32 @llvm.amdgcn.workgroup.id.x()66 store volatile i32 %id0, ptr addrspace(1) poison67 %id1 = call i32 @llvm.amdgcn.workgroup.id.y()68 store volatile i32 %id1, ptr addrspace(1) poison69 ret void70}71 72; HSA-LABEL: name: workgroup_id_xyz{{$}}73; HSA: liveins:74; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }75; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }76; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }77; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }78; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }79; HSA-NEXT: frameInfo:80define amdgpu_kernel void @workgroup_id_xyz() {81 %id0 = call i32 @llvm.amdgcn.workgroup.id.x()82 store volatile i32 %id0, ptr addrspace(1) poison83 %id1 = call i32 @llvm.amdgcn.workgroup.id.y()84 store volatile i32 %id1, ptr addrspace(1) poison85 %id2 = call i32 @llvm.amdgcn.workgroup.id.y()86 store volatile i32 %id2, ptr addrspace(1) poison87 ret void88}89 90; HSA-LABEL: name: workgroup_id_yz{{$}}91; HSA: liveins:92; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }93; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }94; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }95; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }96; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }97; HSA-NEXT: frameInfo:98define amdgpu_kernel void @workgroup_id_yz() {99 %id0 = call i32 @llvm.amdgcn.workgroup.id.x()100 store volatile i32 %id0, ptr addrspace(1) poison101 %id1 = call i32 @llvm.amdgcn.workgroup.id.y()102 store volatile i32 %id1, ptr addrspace(1) poison103 ret void104}105 106; HSA-LABEL: name: workgroup_id_xz{{$}}107; HSA: liveins:108; HSA-NEXT: - { reg: '$sgpr0_sgpr1_sgpr2_sgpr3', virtual-reg: '%0' }109; HSA-NEXT: - { reg: '$vgpr0', virtual-reg: '%1' }110; HSA-NEXT: - { reg: '$sgpr4', virtual-reg: '%2' }111; HSA-NEXT: - { reg: '$sgpr5', virtual-reg: '%3' }112; HSA-NEXT: - { reg: '$sgpr6', virtual-reg: '%4' }113; HSA-NEXT: frameInfo:114define amdgpu_kernel void @workgroup_id_xz() {115 %id0 = call i32 @llvm.amdgcn.workgroup.id.x()116 store volatile i32 %id0, ptr addrspace(1) poison117 %id1 = call i32 @llvm.amdgcn.workgroup.id.z()118 store volatile i32 %id1, ptr addrspace(1) poison119 ret void120}121 122declare i32 @llvm.amdgcn.workgroup.id.x() #0123declare i32 @llvm.amdgcn.workgroup.id.y() #0124declare i32 @llvm.amdgcn.workgroup.id.z() #0125 126attributes #0 = { nounwind readnone speculatable }127