brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.2 KiB · 3563e73 Raw
204 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -passes=amdgpu-lower-kernel-attributes,instcombine,infer-alignment %s | FileCheck -enable-var-scope -check-prefix=GCN %s3 4; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn5define amdgpu_kernel void @get_local_size_x(ptr addrspace(1) %out) #0 {6; GCN-LABEL: @get_local_size_x(7; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()8; GCN-NEXT:    [[GEP_LOCAL_SIZE:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 129; GCN-NEXT:    [[LOCAL_SIZE:%.*]] = load i16, ptr addrspace(4) [[GEP_LOCAL_SIZE]], align 410; GCN-NEXT:    store i16 [[LOCAL_SIZE]], ptr addrspace(1) [[OUT:%.*]], align 211; GCN-NEXT:    ret void12;13  %group.id = tail call i32 @llvm.amdgcn.workgroup.id.x()14  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()15  %block.count.x = load i32, ptr addrspace(4) %implicitarg.ptr, align 416  %cmp.id.count = icmp ult i32 %group.id, %block.count.x17  %local.size.offset = select i1 %cmp.id.count, i64 12, i64 1818  %gep.local.size = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 %local.size.offset19  %local.size = load i16, ptr addrspace(4) %gep.local.size, align 220  store i16 %local.size, ptr addrspace(1) %out21  ret void22}23 24; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn25define amdgpu_kernel void @get_local_size_y(ptr addrspace(1) %out) #0 {26; GCN-LABEL: @get_local_size_y(27; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()28; GCN-NEXT:    [[GEP_LOCAL_SIZE:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 1429; GCN-NEXT:    [[LOCAL_SIZE:%.*]] = load i16, ptr addrspace(4) [[GEP_LOCAL_SIZE]], align 230; GCN-NEXT:    store i16 [[LOCAL_SIZE]], ptr addrspace(1) [[OUT:%.*]], align 231; GCN-NEXT:    ret void32;33  %group.id = tail call i32 @llvm.amdgcn.workgroup.id.y()34  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()35  %gep.block.count.y = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 436  %block.count.y = load i32, ptr addrspace(4) %gep.block.count.y, align 437  %cmp.id.count = icmp ult i32 %group.id, %block.count.y38  %local.size.offset = select i1 %cmp.id.count, i64 14, i64 2039  %gep.local.size = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 %local.size.offset40  %local.size = load i16, ptr addrspace(4) %gep.local.size, align 241  store i16 %local.size, ptr addrspace(1) %out42  ret void43}44 45; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn46define amdgpu_kernel void @get_local_size_z(ptr addrspace(1) %out) #0 {47; GCN-LABEL: @get_local_size_z(48; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()49; GCN-NEXT:    [[GEP_LOCAL_SIZE:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 1650; GCN-NEXT:    [[LOCAL_SIZE:%.*]] = load i16, ptr addrspace(4) [[GEP_LOCAL_SIZE]], align 451; GCN-NEXT:    store i16 [[LOCAL_SIZE]], ptr addrspace(1) [[OUT:%.*]], align 252; GCN-NEXT:    ret void53;54  %group.id = tail call i32 @llvm.amdgcn.workgroup.id.z()55  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()56  %gep.block.count.z = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 857  %block.count.z = load i32, ptr addrspace(4) %gep.block.count.z, align 458  %cmp.id.count = icmp ult i32 %group.id, %block.count.z59  %local.size.offset = select i1 %cmp.id.count, i64 16, i64 2260  %gep.local.size = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 %local.size.offset61  %local.size = load i16, ptr addrspace(4) %gep.local.size, align 262  store i16 %local.size, ptr addrspace(1) %out63  ret void64}65 66; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn67define amdgpu_kernel void @get_remainder_x(ptr addrspace(1) %out) #0 {68; GCN-LABEL: @get_remainder_x(69; GCN-NEXT:    store i16 0, ptr addrspace(1) [[OUT:%.*]], align 270; GCN-NEXT:    ret void71;72  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()73  %gep.x = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 1874  %remainder.x = load i16, ptr addrspace(4) %gep.x, align 275  store i16 %remainder.x, ptr addrspace(1) %out76  ret void77}78 79; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn80define amdgpu_kernel void @get_remainder_y(ptr addrspace(1) %out) #0 {81; GCN-LABEL: @get_remainder_y(82; GCN-NEXT:    store i16 0, ptr addrspace(1) [[OUT:%.*]], align 283; GCN-NEXT:    ret void84;85  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()86  %gep.y = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 1887  %remainder.y = load i16, ptr addrspace(4) %gep.y, align 288  store i16 %remainder.y, ptr addrspace(1) %out89  ret void90}91 92; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn93define amdgpu_kernel void @get_remainder_z(ptr addrspace(1) %out) #0 {94; GCN-LABEL: @get_remainder_z(95; GCN-NEXT:    store i16 0, ptr addrspace(1) [[OUT:%.*]], align 296; GCN-NEXT:    ret void97;98  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()99  %gep.z = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 18100  %remainder.z = load i16, ptr addrspace(4) %gep.z, align 2101  store i16 %remainder.z, ptr addrspace(1) %out102  ret void103}104 105; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn106define amdgpu_kernel void @get_work_group_size_x(ptr addrspace(1) %out) #0 {107; GCN-LABEL: @get_work_group_size_x(108; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()109; GCN-NEXT:    [[GEP_X:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 12110; GCN-NEXT:    [[GROUP_SIZE_X:%.*]] = load i16, ptr addrspace(4) [[GEP_X]], align 4111; GCN-NEXT:    store i16 [[GROUP_SIZE_X]], ptr addrspace(1) [[OUT:%.*]], align 2112; GCN-NEXT:    ret void113;114  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()115  %gep.x = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 12116  %group.size.x = load i16, ptr addrspace(4) %gep.x, align 2117  store i16 %group.size.x, ptr addrspace(1) %out118  ret void119}120 121; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn122define amdgpu_kernel void @get_work_group_size_y(ptr addrspace(1) %out) #0 {123; GCN-LABEL: @get_work_group_size_y(124; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()125; GCN-NEXT:    [[GEP_Y:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 14126; GCN-NEXT:    [[GROUP_SIZE_Y:%.*]] = load i16, ptr addrspace(4) [[GEP_Y]], align 2127; GCN-NEXT:    store i16 [[GROUP_SIZE_Y]], ptr addrspace(1) [[OUT:%.*]], align 2128; GCN-NEXT:    ret void129;130  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()131  %gep.y = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 14132  %group.size.y = load i16, ptr addrspace(4) %gep.y, align 2133  store i16 %group.size.y, ptr addrspace(1) %out134  ret void135}136 137; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn138define amdgpu_kernel void @get_work_group_size_z(ptr addrspace(1) %out) #0 {139; GCN-LABEL: @get_work_group_size_z(140; GCN-NEXT:    [[IMPLICITARG_PTR:%.*]] = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()141; GCN-NEXT:    [[GEP_Z:%.*]] = getelementptr inbounds nuw i8, ptr addrspace(4) [[IMPLICITARG_PTR]], i64 16142; GCN-NEXT:    [[GROUP_SIZE_Z:%.*]] = load i16, ptr addrspace(4) [[GEP_Z]], align 4143; GCN-NEXT:    store i16 [[GROUP_SIZE_Z]], ptr addrspace(1) [[OUT:%.*]], align 2144; GCN-NEXT:    ret void145;146  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()147  %gep.z = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 16148  %group.size.z = load i16, ptr addrspace(4) %gep.z, align 2149  store i16 %group.size.z, ptr addrspace(1) %out150  ret void151}152 153; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn154define amdgpu_kernel void @get_work_group_size_x_reqd(ptr addrspace(1) %out) #0 !reqd_work_group_size !0 {155; GCN-LABEL: @get_work_group_size_x_reqd(156; GCN-NEXT:    store i16 8, ptr addrspace(1) [[OUT:%.*]], align 2157; GCN-NEXT:    ret void158;159  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()160  %gep.x = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 12161  %group.size.x = load i16, ptr addrspace(4) %gep.x, align 2162  store i16 %group.size.x, ptr addrspace(1) %out163  ret void164}165 166; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn167define amdgpu_kernel void @get_work_group_size_y_reqd(ptr addrspace(1) %out) #0 !reqd_work_group_size !0 {168; GCN-LABEL: @get_work_group_size_y_reqd(169; GCN-NEXT:    store i16 16, ptr addrspace(1) [[OUT:%.*]], align 2170; GCN-NEXT:    ret void171;172  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()173  %gep.y = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 14174  %group.size.y = load i16, ptr addrspace(4) %gep.y, align 2175  store i16 %group.size.y, ptr addrspace(1) %out176  ret void177}178 179; Function Attrs: mustprogress nofree norecurse nosync nounwind readnone willreturn180define amdgpu_kernel void @get_work_group_size_z_reqd(ptr addrspace(1) %out) #0 !reqd_work_group_size !0 {181; GCN-LABEL: @get_work_group_size_z_reqd(182; GCN-NEXT:    store i16 2, ptr addrspace(1) [[OUT:%.*]], align 2183; GCN-NEXT:    ret void184;185  %implicitarg.ptr = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()186  %gep.z = getelementptr inbounds i8, ptr addrspace(4) %implicitarg.ptr, i64 16187  %group.size.z = load i16, ptr addrspace(4) %gep.z, align 2188  store i16 %group.size.z, ptr addrspace(1) %out189  ret void190}191 192 193declare ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() #1194declare i32 @llvm.amdgcn.workgroup.id.x() #1195declare i32 @llvm.amdgcn.workgroup.id.y() #1196declare i32 @llvm.amdgcn.workgroup.id.z() #1197 198!llvm.module.flags = !{!1}199 200attributes #0 = { nounwind "uniform-work-group-size"="true" }201attributes #1 = { nounwind readnone speculatable }202!0 = !{i32 8, i32 16, i32 2}203!1 = !{i32 1, !"amdhsa_code_object_version", i32 500}204