brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 0f76767 Raw
78 lines · plain
1; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -passes=inline --inline-threshold=1 --inlinehint-threshold=4 < %s | FileCheck %s2 3define hidden <16 x i32> @div_hint(<16 x i32> %x, <16 x i32> %y) #0 {4entry:5  %div.1 = udiv <16 x i32> %x, %y6  %div.2 = udiv <16 x i32> %div.1, %y7  %div.3 = udiv <16 x i32> %div.2, %y8  %div.4 = udiv <16 x i32> %div.3, %y9  %div.5 = udiv <16 x i32> %div.4, %y10  %div.6 = udiv <16 x i32> %div.5, %y11  %div.7 = udiv <16 x i32> %div.6, %y12  %div.8 = udiv <16 x i32> %div.7, %y13  %div.9 = udiv <16 x i32> %div.8, %y14  %div.10 = udiv <16 x i32> %div.9, %y15  %div.11 = udiv <16 x i32> %div.10, %y16  %div.12 = udiv <16 x i32> %div.11, %y17  %div.13 = udiv <16 x i32> %div.12, %y18  %div.14 = udiv <16 x i32> %div.13, %y19  %div.15 = udiv <16 x i32> %div.14, %y20  %div.16 = udiv <16 x i32> %div.15, %y21  %div.17 = udiv <16 x i32> %div.16, %y22  %div.18 = udiv <16 x i32> %div.17, %y23  %div.19 = udiv <16 x i32> %div.18, %y24  ret <16 x i32> %div.1925}26 27; CHECK-LABEL: define amdgpu_kernel void @caller_hint28; CHECK-NOT: call29; CHECK: udiv30; CHECK: ret void31define amdgpu_kernel void @caller_hint(ptr addrspace(1) nocapture %x, ptr addrspace(1) nocapture readonly %y) {32entry:33  %tmp = load <16 x i32>, ptr addrspace(1) %x, align 434  %tmp1 = load <16 x i32>, ptr addrspace(1) %y, align 435  %div.i = tail call <16 x i32> @div_hint(<16 x i32> %tmp, <16 x i32> %tmp1) #036  store <16 x i32> %div.i, ptr addrspace(1) %x, align 437  ret void38}39 40define hidden <16 x i32> @div_nohint(<16 x i32> %x, <16 x i32> %y) {41entry:42  %div.1 = udiv <16 x i32> %x, %y43  %div.2 = udiv <16 x i32> %div.1, %y44  %div.3 = udiv <16 x i32> %div.2, %y45  %div.4 = udiv <16 x i32> %div.3, %y46  %div.5 = udiv <16 x i32> %div.4, %y47  %div.6 = udiv <16 x i32> %div.5, %y48  %div.7 = udiv <16 x i32> %div.6, %y49  %div.8 = udiv <16 x i32> %div.7, %y50  %div.9 = udiv <16 x i32> %div.8, %y51  %div.10 = udiv <16 x i32> %div.9, %y52  %div.11 = udiv <16 x i32> %div.10, %y53  %div.12 = udiv <16 x i32> %div.11, %y54  %div.13 = udiv <16 x i32> %div.12, %y55  %div.14 = udiv <16 x i32> %div.13, %y56  %div.15 = udiv <16 x i32> %div.14, %y57  %div.16 = udiv <16 x i32> %div.15, %y58  %div.17 = udiv <16 x i32> %div.16, %y59  %div.18 = udiv <16 x i32> %div.17, %y60  %div.19 = udiv <16 x i32> %div.18, %y61  ret <16 x i32> %div.1962}63 64; CHECK-LABEL: define amdgpu_kernel void @caller_nohint65; CHECK-NOT: udiv66; CHECK: tail call <16 x i32> @div_nohint67; CHECK: ret void68define amdgpu_kernel void @caller_nohint(ptr addrspace(1) nocapture %x, ptr addrspace(1) nocapture readonly %y) {69entry:70  %tmp = load <16 x i32>, ptr addrspace(1) %x71  %tmp1 = load <16 x i32>, ptr addrspace(1) %y72  %div.i = tail call <16 x i32> @div_nohint(<16 x i32> %tmp, <16 x i32> %tmp1)73  store <16 x i32> %div.i, ptr addrspace(1) %x74  ret void75}76 77attributes #0 = { inlinehint }78