Files
clang-p2996/llvm/test/CodeGen/AMDGPU/vgpr-agpr-limit-gfx90a.ll
Stanislav Mekhanoshin ca0c92d6a1 [AMDGPU] Allow to use a whole register file on gfx90a for VGPRs
In a kernel which does not have calls or AGPR usage we can allocate
the whole vector register budget for VGPRs and have no AGPRs as
long as VGPRs stay addressable (i.e. below 256).

Differential Revision: https://reviews.llvm.org/D111764
2021-10-21 18:24:34 -07:00

701 lines
32 KiB
LLVM

; -enable-misched=false makes the register usage more predictable
; -regalloc=fast just makes the test run faster
; RUN: llc -march=amdgcn -mcpu=gfx90a -amdgpu-function-calls=false -enable-misched=false -sgpr-regalloc=fast -vgpr-regalloc=fast < %s | FileCheck %s --check-prefixes=GCN,GFX90A
define internal void @use256vgprs() {
%v0 = call i32 asm sideeffect "; def $0", "=v"()
%v1 = call i32 asm sideeffect "; def $0", "=v"()
%v2 = call i32 asm sideeffect "; def $0", "=v"()
%v3 = call i32 asm sideeffect "; def $0", "=v"()
%v4 = call i32 asm sideeffect "; def $0", "=v"()
%v5 = call i32 asm sideeffect "; def $0", "=v"()
%v6 = call i32 asm sideeffect "; def $0", "=v"()
%v7 = call i32 asm sideeffect "; def $0", "=v"()
%v8 = call i32 asm sideeffect "; def $0", "=v"()
%v9 = call i32 asm sideeffect "; def $0", "=v"()
%v10 = call i32 asm sideeffect "; def $0", "=v"()
%v11 = call i32 asm sideeffect "; def $0", "=v"()
%v12 = call i32 asm sideeffect "; def $0", "=v"()
%v13 = call i32 asm sideeffect "; def $0", "=v"()
%v14 = call i32 asm sideeffect "; def $0", "=v"()
%v15 = call i32 asm sideeffect "; def $0", "=v"()
%v16 = call i32 asm sideeffect "; def $0", "=v"()
%v17 = call i32 asm sideeffect "; def $0", "=v"()
%v18 = call i32 asm sideeffect "; def $0", "=v"()
%v19 = call i32 asm sideeffect "; def $0", "=v"()
%v20 = call i32 asm sideeffect "; def $0", "=v"()
%v21 = call i32 asm sideeffect "; def $0", "=v"()
%v22 = call i32 asm sideeffect "; def $0", "=v"()
%v23 = call i32 asm sideeffect "; def $0", "=v"()
%v24 = call i32 asm sideeffect "; def $0", "=v"()
%v25 = call i32 asm sideeffect "; def $0", "=v"()
%v26 = call i32 asm sideeffect "; def $0", "=v"()
%v27 = call i32 asm sideeffect "; def $0", "=v"()
%v28 = call i32 asm sideeffect "; def $0", "=v"()
%v29 = call i32 asm sideeffect "; def $0", "=v"()
%v30 = call i32 asm sideeffect "; def $0", "=v"()
%v31 = call i32 asm sideeffect "; def $0", "=v"()
%v32 = call i32 asm sideeffect "; def $0", "=v"()
%v33 = call i32 asm sideeffect "; def $0", "=v"()
%v34 = call i32 asm sideeffect "; def $0", "=v"()
%v35 = call i32 asm sideeffect "; def $0", "=v"()
%v36 = call i32 asm sideeffect "; def $0", "=v"()
%v37 = call i32 asm sideeffect "; def $0", "=v"()
%v38 = call i32 asm sideeffect "; def $0", "=v"()
%v39 = call i32 asm sideeffect "; def $0", "=v"()
%v40 = call i32 asm sideeffect "; def $0", "=v"()
%v41 = call i32 asm sideeffect "; def $0", "=v"()
%v42 = call i32 asm sideeffect "; def $0", "=v"()
%v43 = call i32 asm sideeffect "; def $0", "=v"()
%v44 = call i32 asm sideeffect "; def $0", "=v"()
%v45 = call i32 asm sideeffect "; def $0", "=v"()
%v46 = call i32 asm sideeffect "; def $0", "=v"()
%v47 = call i32 asm sideeffect "; def $0", "=v"()
%v48 = call i32 asm sideeffect "; def $0", "=v"()
%v49 = call i32 asm sideeffect "; def $0", "=v"()
%v50 = call i32 asm sideeffect "; def $0", "=v"()
%v51 = call i32 asm sideeffect "; def $0", "=v"()
%v52 = call i32 asm sideeffect "; def $0", "=v"()
%v53 = call i32 asm sideeffect "; def $0", "=v"()
%v54 = call i32 asm sideeffect "; def $0", "=v"()
%v55 = call i32 asm sideeffect "; def $0", "=v"()
%v56 = call i32 asm sideeffect "; def $0", "=v"()
%v57 = call i32 asm sideeffect "; def $0", "=v"()
%v58 = call i32 asm sideeffect "; def $0", "=v"()
%v59 = call i32 asm sideeffect "; def $0", "=v"()
%v60 = call i32 asm sideeffect "; def $0", "=v"()
%v61 = call i32 asm sideeffect "; def $0", "=v"()
%v62 = call i32 asm sideeffect "; def $0", "=v"()
%v63 = call i32 asm sideeffect "; def $0", "=v"()
%v64 = call i32 asm sideeffect "; def $0", "=v"()
%v65 = call i32 asm sideeffect "; def $0", "=v"()
%v66 = call i32 asm sideeffect "; def $0", "=v"()
%v67 = call i32 asm sideeffect "; def $0", "=v"()
%v68 = call i32 asm sideeffect "; def $0", "=v"()
%v69 = call i32 asm sideeffect "; def $0", "=v"()
%v70 = call i32 asm sideeffect "; def $0", "=v"()
%v71 = call i32 asm sideeffect "; def $0", "=v"()
%v72 = call i32 asm sideeffect "; def $0", "=v"()
%v73 = call i32 asm sideeffect "; def $0", "=v"()
%v74 = call i32 asm sideeffect "; def $0", "=v"()
%v75 = call i32 asm sideeffect "; def $0", "=v"()
%v76 = call i32 asm sideeffect "; def $0", "=v"()
%v77 = call i32 asm sideeffect "; def $0", "=v"()
%v78 = call i32 asm sideeffect "; def $0", "=v"()
%v79 = call i32 asm sideeffect "; def $0", "=v"()
%v80 = call i32 asm sideeffect "; def $0", "=v"()
%v81 = call i32 asm sideeffect "; def $0", "=v"()
%v82 = call i32 asm sideeffect "; def $0", "=v"()
%v83 = call i32 asm sideeffect "; def $0", "=v"()
%v84 = call i32 asm sideeffect "; def $0", "=v"()
%v85 = call i32 asm sideeffect "; def $0", "=v"()
%v86 = call i32 asm sideeffect "; def $0", "=v"()
%v87 = call i32 asm sideeffect "; def $0", "=v"()
%v88 = call i32 asm sideeffect "; def $0", "=v"()
%v89 = call i32 asm sideeffect "; def $0", "=v"()
%v90 = call i32 asm sideeffect "; def $0", "=v"()
%v91 = call i32 asm sideeffect "; def $0", "=v"()
%v92 = call i32 asm sideeffect "; def $0", "=v"()
%v93 = call i32 asm sideeffect "; def $0", "=v"()
%v94 = call i32 asm sideeffect "; def $0", "=v"()
%v95 = call i32 asm sideeffect "; def $0", "=v"()
%v96 = call i32 asm sideeffect "; def $0", "=v"()
%v97 = call i32 asm sideeffect "; def $0", "=v"()
%v98 = call i32 asm sideeffect "; def $0", "=v"()
%v99 = call i32 asm sideeffect "; def $0", "=v"()
%v100 = call i32 asm sideeffect "; def $0", "=v"()
%v101 = call i32 asm sideeffect "; def $0", "=v"()
%v102 = call i32 asm sideeffect "; def $0", "=v"()
%v103 = call i32 asm sideeffect "; def $0", "=v"()
%v104 = call i32 asm sideeffect "; def $0", "=v"()
%v105 = call i32 asm sideeffect "; def $0", "=v"()
%v106 = call i32 asm sideeffect "; def $0", "=v"()
%v107 = call i32 asm sideeffect "; def $0", "=v"()
%v108 = call i32 asm sideeffect "; def $0", "=v"()
%v109 = call i32 asm sideeffect "; def $0", "=v"()
%v110 = call i32 asm sideeffect "; def $0", "=v"()
%v111 = call i32 asm sideeffect "; def $0", "=v"()
%v112 = call i32 asm sideeffect "; def $0", "=v"()
%v113 = call i32 asm sideeffect "; def $0", "=v"()
%v114 = call i32 asm sideeffect "; def $0", "=v"()
%v115 = call i32 asm sideeffect "; def $0", "=v"()
%v116 = call i32 asm sideeffect "; def $0", "=v"()
%v117 = call i32 asm sideeffect "; def $0", "=v"()
%v118 = call i32 asm sideeffect "; def $0", "=v"()
%v119 = call i32 asm sideeffect "; def $0", "=v"()
%v120 = call i32 asm sideeffect "; def $0", "=v"()
%v121 = call i32 asm sideeffect "; def $0", "=v"()
%v122 = call i32 asm sideeffect "; def $0", "=v"()
%v123 = call i32 asm sideeffect "; def $0", "=v"()
%v124 = call i32 asm sideeffect "; def $0", "=v"()
%v125 = call i32 asm sideeffect "; def $0", "=v"()
%v126 = call i32 asm sideeffect "; def $0", "=v"()
%v127 = call i32 asm sideeffect "; def $0", "=v"()
%v128 = call i32 asm sideeffect "; def $0", "=v"()
%v129 = call i32 asm sideeffect "; def $0", "=v"()
%v130 = call i32 asm sideeffect "; def $0", "=v"()
%v131 = call i32 asm sideeffect "; def $0", "=v"()
%v132 = call i32 asm sideeffect "; def $0", "=v"()
%v133 = call i32 asm sideeffect "; def $0", "=v"()
%v134 = call i32 asm sideeffect "; def $0", "=v"()
%v135 = call i32 asm sideeffect "; def $0", "=v"()
%v136 = call i32 asm sideeffect "; def $0", "=v"()
%v137 = call i32 asm sideeffect "; def $0", "=v"()
%v138 = call i32 asm sideeffect "; def $0", "=v"()
%v139 = call i32 asm sideeffect "; def $0", "=v"()
%v140 = call i32 asm sideeffect "; def $0", "=v"()
%v141 = call i32 asm sideeffect "; def $0", "=v"()
%v142 = call i32 asm sideeffect "; def $0", "=v"()
%v143 = call i32 asm sideeffect "; def $0", "=v"()
%v144 = call i32 asm sideeffect "; def $0", "=v"()
%v145 = call i32 asm sideeffect "; def $0", "=v"()
%v146 = call i32 asm sideeffect "; def $0", "=v"()
%v147 = call i32 asm sideeffect "; def $0", "=v"()
%v148 = call i32 asm sideeffect "; def $0", "=v"()
%v149 = call i32 asm sideeffect "; def $0", "=v"()
%v150 = call i32 asm sideeffect "; def $0", "=v"()
%v151 = call i32 asm sideeffect "; def $0", "=v"()
%v152 = call i32 asm sideeffect "; def $0", "=v"()
%v153 = call i32 asm sideeffect "; def $0", "=v"()
%v154 = call i32 asm sideeffect "; def $0", "=v"()
%v155 = call i32 asm sideeffect "; def $0", "=v"()
%v156 = call i32 asm sideeffect "; def $0", "=v"()
%v157 = call i32 asm sideeffect "; def $0", "=v"()
%v158 = call i32 asm sideeffect "; def $0", "=v"()
%v159 = call i32 asm sideeffect "; def $0", "=v"()
%v160 = call i32 asm sideeffect "; def $0", "=v"()
%v161 = call i32 asm sideeffect "; def $0", "=v"()
%v162 = call i32 asm sideeffect "; def $0", "=v"()
%v163 = call i32 asm sideeffect "; def $0", "=v"()
%v164 = call i32 asm sideeffect "; def $0", "=v"()
%v165 = call i32 asm sideeffect "; def $0", "=v"()
%v166 = call i32 asm sideeffect "; def $0", "=v"()
%v167 = call i32 asm sideeffect "; def $0", "=v"()
%v168 = call i32 asm sideeffect "; def $0", "=v"()
%v169 = call i32 asm sideeffect "; def $0", "=v"()
%v170 = call i32 asm sideeffect "; def $0", "=v"()
%v171 = call i32 asm sideeffect "; def $0", "=v"()
%v172 = call i32 asm sideeffect "; def $0", "=v"()
%v173 = call i32 asm sideeffect "; def $0", "=v"()
%v174 = call i32 asm sideeffect "; def $0", "=v"()
%v175 = call i32 asm sideeffect "; def $0", "=v"()
%v176 = call i32 asm sideeffect "; def $0", "=v"()
%v177 = call i32 asm sideeffect "; def $0", "=v"()
%v178 = call i32 asm sideeffect "; def $0", "=v"()
%v179 = call i32 asm sideeffect "; def $0", "=v"()
%v180 = call i32 asm sideeffect "; def $0", "=v"()
%v181 = call i32 asm sideeffect "; def $0", "=v"()
%v182 = call i32 asm sideeffect "; def $0", "=v"()
%v183 = call i32 asm sideeffect "; def $0", "=v"()
%v184 = call i32 asm sideeffect "; def $0", "=v"()
%v185 = call i32 asm sideeffect "; def $0", "=v"()
%v186 = call i32 asm sideeffect "; def $0", "=v"()
%v187 = call i32 asm sideeffect "; def $0", "=v"()
%v188 = call i32 asm sideeffect "; def $0", "=v"()
%v189 = call i32 asm sideeffect "; def $0", "=v"()
%v190 = call i32 asm sideeffect "; def $0", "=v"()
%v191 = call i32 asm sideeffect "; def $0", "=v"()
%v192 = call i32 asm sideeffect "; def $0", "=v"()
%v193 = call i32 asm sideeffect "; def $0", "=v"()
%v194 = call i32 asm sideeffect "; def $0", "=v"()
%v195 = call i32 asm sideeffect "; def $0", "=v"()
%v196 = call i32 asm sideeffect "; def $0", "=v"()
%v197 = call i32 asm sideeffect "; def $0", "=v"()
%v198 = call i32 asm sideeffect "; def $0", "=v"()
%v199 = call i32 asm sideeffect "; def $0", "=v"()
%v200 = call i32 asm sideeffect "; def $0", "=v"()
%v201 = call i32 asm sideeffect "; def $0", "=v"()
%v202 = call i32 asm sideeffect "; def $0", "=v"()
%v203 = call i32 asm sideeffect "; def $0", "=v"()
%v204 = call i32 asm sideeffect "; def $0", "=v"()
%v205 = call i32 asm sideeffect "; def $0", "=v"()
%v206 = call i32 asm sideeffect "; def $0", "=v"()
%v207 = call i32 asm sideeffect "; def $0", "=v"()
%v208 = call i32 asm sideeffect "; def $0", "=v"()
%v209 = call i32 asm sideeffect "; def $0", "=v"()
%v210 = call i32 asm sideeffect "; def $0", "=v"()
%v211 = call i32 asm sideeffect "; def $0", "=v"()
%v212 = call i32 asm sideeffect "; def $0", "=v"()
%v213 = call i32 asm sideeffect "; def $0", "=v"()
%v214 = call i32 asm sideeffect "; def $0", "=v"()
%v215 = call i32 asm sideeffect "; def $0", "=v"()
%v216 = call i32 asm sideeffect "; def $0", "=v"()
%v217 = call i32 asm sideeffect "; def $0", "=v"()
%v218 = call i32 asm sideeffect "; def $0", "=v"()
%v219 = call i32 asm sideeffect "; def $0", "=v"()
%v220 = call i32 asm sideeffect "; def $0", "=v"()
%v221 = call i32 asm sideeffect "; def $0", "=v"()
%v222 = call i32 asm sideeffect "; def $0", "=v"()
%v223 = call i32 asm sideeffect "; def $0", "=v"()
%v224 = call i32 asm sideeffect "; def $0", "=v"()
%v225 = call i32 asm sideeffect "; def $0", "=v"()
%v226 = call i32 asm sideeffect "; def $0", "=v"()
%v227 = call i32 asm sideeffect "; def $0", "=v"()
%v228 = call i32 asm sideeffect "; def $0", "=v"()
%v229 = call i32 asm sideeffect "; def $0", "=v"()
%v230 = call i32 asm sideeffect "; def $0", "=v"()
%v231 = call i32 asm sideeffect "; def $0", "=v"()
%v232 = call i32 asm sideeffect "; def $0", "=v"()
%v233 = call i32 asm sideeffect "; def $0", "=v"()
%v234 = call i32 asm sideeffect "; def $0", "=v"()
%v235 = call i32 asm sideeffect "; def $0", "=v"()
%v236 = call i32 asm sideeffect "; def $0", "=v"()
%v237 = call i32 asm sideeffect "; def $0", "=v"()
%v238 = call i32 asm sideeffect "; def $0", "=v"()
%v239 = call i32 asm sideeffect "; def $0", "=v"()
%v240 = call i32 asm sideeffect "; def $0", "=v"()
%v241 = call i32 asm sideeffect "; def $0", "=v"()
%v242 = call i32 asm sideeffect "; def $0", "=v"()
%v243 = call i32 asm sideeffect "; def $0", "=v"()
%v244 = call i32 asm sideeffect "; def $0", "=v"()
%v245 = call i32 asm sideeffect "; def $0", "=v"()
%v246 = call i32 asm sideeffect "; def $0", "=v"()
%v247 = call i32 asm sideeffect "; def $0", "=v"()
%v248 = call i32 asm sideeffect "; def $0", "=v"()
%v249 = call i32 asm sideeffect "; def $0", "=v"()
%v250 = call i32 asm sideeffect "; def $0", "=v"()
%v251 = call i32 asm sideeffect "; def $0", "=v"()
%v252 = call i32 asm sideeffect "; def $0", "=v"()
%v253 = call i32 asm sideeffect "; def $0", "=v"()
%v254 = call i32 asm sideeffect "; def $0", "=v"()
%v255 = call i32 asm sideeffect "; def $0", "=v"()
call void asm sideeffect "; use $0", "v"(i32 %v0)
call void asm sideeffect "; use $0", "v"(i32 %v1)
call void asm sideeffect "; use $0", "v"(i32 %v2)
call void asm sideeffect "; use $0", "v"(i32 %v3)
call void asm sideeffect "; use $0", "v"(i32 %v4)
call void asm sideeffect "; use $0", "v"(i32 %v5)
call void asm sideeffect "; use $0", "v"(i32 %v6)
call void asm sideeffect "; use $0", "v"(i32 %v7)
call void asm sideeffect "; use $0", "v"(i32 %v8)
call void asm sideeffect "; use $0", "v"(i32 %v9)
call void asm sideeffect "; use $0", "v"(i32 %v10)
call void asm sideeffect "; use $0", "v"(i32 %v11)
call void asm sideeffect "; use $0", "v"(i32 %v12)
call void asm sideeffect "; use $0", "v"(i32 %v13)
call void asm sideeffect "; use $0", "v"(i32 %v14)
call void asm sideeffect "; use $0", "v"(i32 %v15)
call void asm sideeffect "; use $0", "v"(i32 %v16)
call void asm sideeffect "; use $0", "v"(i32 %v17)
call void asm sideeffect "; use $0", "v"(i32 %v18)
call void asm sideeffect "; use $0", "v"(i32 %v19)
call void asm sideeffect "; use $0", "v"(i32 %v20)
call void asm sideeffect "; use $0", "v"(i32 %v21)
call void asm sideeffect "; use $0", "v"(i32 %v22)
call void asm sideeffect "; use $0", "v"(i32 %v23)
call void asm sideeffect "; use $0", "v"(i32 %v24)
call void asm sideeffect "; use $0", "v"(i32 %v25)
call void asm sideeffect "; use $0", "v"(i32 %v26)
call void asm sideeffect "; use $0", "v"(i32 %v27)
call void asm sideeffect "; use $0", "v"(i32 %v28)
call void asm sideeffect "; use $0", "v"(i32 %v29)
call void asm sideeffect "; use $0", "v"(i32 %v30)
call void asm sideeffect "; use $0", "v"(i32 %v31)
call void asm sideeffect "; use $0", "v"(i32 %v32)
call void asm sideeffect "; use $0", "v"(i32 %v33)
call void asm sideeffect "; use $0", "v"(i32 %v34)
call void asm sideeffect "; use $0", "v"(i32 %v35)
call void asm sideeffect "; use $0", "v"(i32 %v36)
call void asm sideeffect "; use $0", "v"(i32 %v37)
call void asm sideeffect "; use $0", "v"(i32 %v38)
call void asm sideeffect "; use $0", "v"(i32 %v39)
call void asm sideeffect "; use $0", "v"(i32 %v40)
call void asm sideeffect "; use $0", "v"(i32 %v41)
call void asm sideeffect "; use $0", "v"(i32 %v42)
call void asm sideeffect "; use $0", "v"(i32 %v43)
call void asm sideeffect "; use $0", "v"(i32 %v44)
call void asm sideeffect "; use $0", "v"(i32 %v45)
call void asm sideeffect "; use $0", "v"(i32 %v46)
call void asm sideeffect "; use $0", "v"(i32 %v47)
call void asm sideeffect "; use $0", "v"(i32 %v48)
call void asm sideeffect "; use $0", "v"(i32 %v49)
call void asm sideeffect "; use $0", "v"(i32 %v50)
call void asm sideeffect "; use $0", "v"(i32 %v51)
call void asm sideeffect "; use $0", "v"(i32 %v52)
call void asm sideeffect "; use $0", "v"(i32 %v53)
call void asm sideeffect "; use $0", "v"(i32 %v54)
call void asm sideeffect "; use $0", "v"(i32 %v55)
call void asm sideeffect "; use $0", "v"(i32 %v56)
call void asm sideeffect "; use $0", "v"(i32 %v57)
call void asm sideeffect "; use $0", "v"(i32 %v58)
call void asm sideeffect "; use $0", "v"(i32 %v59)
call void asm sideeffect "; use $0", "v"(i32 %v60)
call void asm sideeffect "; use $0", "v"(i32 %v61)
call void asm sideeffect "; use $0", "v"(i32 %v62)
call void asm sideeffect "; use $0", "v"(i32 %v63)
call void asm sideeffect "; use $0", "v"(i32 %v64)
call void asm sideeffect "; use $0", "v"(i32 %v65)
call void asm sideeffect "; use $0", "v"(i32 %v66)
call void asm sideeffect "; use $0", "v"(i32 %v67)
call void asm sideeffect "; use $0", "v"(i32 %v68)
call void asm sideeffect "; use $0", "v"(i32 %v69)
call void asm sideeffect "; use $0", "v"(i32 %v70)
call void asm sideeffect "; use $0", "v"(i32 %v71)
call void asm sideeffect "; use $0", "v"(i32 %v72)
call void asm sideeffect "; use $0", "v"(i32 %v73)
call void asm sideeffect "; use $0", "v"(i32 %v74)
call void asm sideeffect "; use $0", "v"(i32 %v75)
call void asm sideeffect "; use $0", "v"(i32 %v76)
call void asm sideeffect "; use $0", "v"(i32 %v77)
call void asm sideeffect "; use $0", "v"(i32 %v78)
call void asm sideeffect "; use $0", "v"(i32 %v79)
call void asm sideeffect "; use $0", "v"(i32 %v80)
call void asm sideeffect "; use $0", "v"(i32 %v81)
call void asm sideeffect "; use $0", "v"(i32 %v82)
call void asm sideeffect "; use $0", "v"(i32 %v83)
call void asm sideeffect "; use $0", "v"(i32 %v84)
call void asm sideeffect "; use $0", "v"(i32 %v85)
call void asm sideeffect "; use $0", "v"(i32 %v86)
call void asm sideeffect "; use $0", "v"(i32 %v87)
call void asm sideeffect "; use $0", "v"(i32 %v88)
call void asm sideeffect "; use $0", "v"(i32 %v89)
call void asm sideeffect "; use $0", "v"(i32 %v90)
call void asm sideeffect "; use $0", "v"(i32 %v91)
call void asm sideeffect "; use $0", "v"(i32 %v92)
call void asm sideeffect "; use $0", "v"(i32 %v93)
call void asm sideeffect "; use $0", "v"(i32 %v94)
call void asm sideeffect "; use $0", "v"(i32 %v95)
call void asm sideeffect "; use $0", "v"(i32 %v96)
call void asm sideeffect "; use $0", "v"(i32 %v97)
call void asm sideeffect "; use $0", "v"(i32 %v98)
call void asm sideeffect "; use $0", "v"(i32 %v99)
call void asm sideeffect "; use $0", "v"(i32 %v100)
call void asm sideeffect "; use $0", "v"(i32 %v101)
call void asm sideeffect "; use $0", "v"(i32 %v102)
call void asm sideeffect "; use $0", "v"(i32 %v103)
call void asm sideeffect "; use $0", "v"(i32 %v104)
call void asm sideeffect "; use $0", "v"(i32 %v105)
call void asm sideeffect "; use $0", "v"(i32 %v106)
call void asm sideeffect "; use $0", "v"(i32 %v107)
call void asm sideeffect "; use $0", "v"(i32 %v108)
call void asm sideeffect "; use $0", "v"(i32 %v109)
call void asm sideeffect "; use $0", "v"(i32 %v110)
call void asm sideeffect "; use $0", "v"(i32 %v111)
call void asm sideeffect "; use $0", "v"(i32 %v112)
call void asm sideeffect "; use $0", "v"(i32 %v113)
call void asm sideeffect "; use $0", "v"(i32 %v114)
call void asm sideeffect "; use $0", "v"(i32 %v115)
call void asm sideeffect "; use $0", "v"(i32 %v116)
call void asm sideeffect "; use $0", "v"(i32 %v117)
call void asm sideeffect "; use $0", "v"(i32 %v118)
call void asm sideeffect "; use $0", "v"(i32 %v119)
call void asm sideeffect "; use $0", "v"(i32 %v120)
call void asm sideeffect "; use $0", "v"(i32 %v121)
call void asm sideeffect "; use $0", "v"(i32 %v122)
call void asm sideeffect "; use $0", "v"(i32 %v123)
call void asm sideeffect "; use $0", "v"(i32 %v124)
call void asm sideeffect "; use $0", "v"(i32 %v125)
call void asm sideeffect "; use $0", "v"(i32 %v126)
call void asm sideeffect "; use $0", "v"(i32 %v127)
call void asm sideeffect "; use $0", "v"(i32 %v128)
call void asm sideeffect "; use $0", "v"(i32 %v129)
call void asm sideeffect "; use $0", "v"(i32 %v130)
call void asm sideeffect "; use $0", "v"(i32 %v131)
call void asm sideeffect "; use $0", "v"(i32 %v132)
call void asm sideeffect "; use $0", "v"(i32 %v133)
call void asm sideeffect "; use $0", "v"(i32 %v134)
call void asm sideeffect "; use $0", "v"(i32 %v135)
call void asm sideeffect "; use $0", "v"(i32 %v136)
call void asm sideeffect "; use $0", "v"(i32 %v137)
call void asm sideeffect "; use $0", "v"(i32 %v138)
call void asm sideeffect "; use $0", "v"(i32 %v139)
call void asm sideeffect "; use $0", "v"(i32 %v140)
call void asm sideeffect "; use $0", "v"(i32 %v141)
call void asm sideeffect "; use $0", "v"(i32 %v142)
call void asm sideeffect "; use $0", "v"(i32 %v143)
call void asm sideeffect "; use $0", "v"(i32 %v144)
call void asm sideeffect "; use $0", "v"(i32 %v145)
call void asm sideeffect "; use $0", "v"(i32 %v146)
call void asm sideeffect "; use $0", "v"(i32 %v147)
call void asm sideeffect "; use $0", "v"(i32 %v148)
call void asm sideeffect "; use $0", "v"(i32 %v149)
call void asm sideeffect "; use $0", "v"(i32 %v150)
call void asm sideeffect "; use $0", "v"(i32 %v151)
call void asm sideeffect "; use $0", "v"(i32 %v152)
call void asm sideeffect "; use $0", "v"(i32 %v153)
call void asm sideeffect "; use $0", "v"(i32 %v154)
call void asm sideeffect "; use $0", "v"(i32 %v155)
call void asm sideeffect "; use $0", "v"(i32 %v156)
call void asm sideeffect "; use $0", "v"(i32 %v157)
call void asm sideeffect "; use $0", "v"(i32 %v158)
call void asm sideeffect "; use $0", "v"(i32 %v159)
call void asm sideeffect "; use $0", "v"(i32 %v160)
call void asm sideeffect "; use $0", "v"(i32 %v161)
call void asm sideeffect "; use $0", "v"(i32 %v162)
call void asm sideeffect "; use $0", "v"(i32 %v163)
call void asm sideeffect "; use $0", "v"(i32 %v164)
call void asm sideeffect "; use $0", "v"(i32 %v165)
call void asm sideeffect "; use $0", "v"(i32 %v166)
call void asm sideeffect "; use $0", "v"(i32 %v167)
call void asm sideeffect "; use $0", "v"(i32 %v168)
call void asm sideeffect "; use $0", "v"(i32 %v169)
call void asm sideeffect "; use $0", "v"(i32 %v170)
call void asm sideeffect "; use $0", "v"(i32 %v171)
call void asm sideeffect "; use $0", "v"(i32 %v172)
call void asm sideeffect "; use $0", "v"(i32 %v173)
call void asm sideeffect "; use $0", "v"(i32 %v174)
call void asm sideeffect "; use $0", "v"(i32 %v175)
call void asm sideeffect "; use $0", "v"(i32 %v176)
call void asm sideeffect "; use $0", "v"(i32 %v177)
call void asm sideeffect "; use $0", "v"(i32 %v178)
call void asm sideeffect "; use $0", "v"(i32 %v179)
call void asm sideeffect "; use $0", "v"(i32 %v180)
call void asm sideeffect "; use $0", "v"(i32 %v181)
call void asm sideeffect "; use $0", "v"(i32 %v182)
call void asm sideeffect "; use $0", "v"(i32 %v183)
call void asm sideeffect "; use $0", "v"(i32 %v184)
call void asm sideeffect "; use $0", "v"(i32 %v185)
call void asm sideeffect "; use $0", "v"(i32 %v186)
call void asm sideeffect "; use $0", "v"(i32 %v187)
call void asm sideeffect "; use $0", "v"(i32 %v188)
call void asm sideeffect "; use $0", "v"(i32 %v189)
call void asm sideeffect "; use $0", "v"(i32 %v190)
call void asm sideeffect "; use $0", "v"(i32 %v191)
call void asm sideeffect "; use $0", "v"(i32 %v192)
call void asm sideeffect "; use $0", "v"(i32 %v193)
call void asm sideeffect "; use $0", "v"(i32 %v194)
call void asm sideeffect "; use $0", "v"(i32 %v195)
call void asm sideeffect "; use $0", "v"(i32 %v196)
call void asm sideeffect "; use $0", "v"(i32 %v197)
call void asm sideeffect "; use $0", "v"(i32 %v198)
call void asm sideeffect "; use $0", "v"(i32 %v199)
call void asm sideeffect "; use $0", "v"(i32 %v200)
call void asm sideeffect "; use $0", "v"(i32 %v201)
call void asm sideeffect "; use $0", "v"(i32 %v202)
call void asm sideeffect "; use $0", "v"(i32 %v203)
call void asm sideeffect "; use $0", "v"(i32 %v204)
call void asm sideeffect "; use $0", "v"(i32 %v205)
call void asm sideeffect "; use $0", "v"(i32 %v206)
call void asm sideeffect "; use $0", "v"(i32 %v207)
call void asm sideeffect "; use $0", "v"(i32 %v208)
call void asm sideeffect "; use $0", "v"(i32 %v209)
call void asm sideeffect "; use $0", "v"(i32 %v210)
call void asm sideeffect "; use $0", "v"(i32 %v211)
call void asm sideeffect "; use $0", "v"(i32 %v212)
call void asm sideeffect "; use $0", "v"(i32 %v213)
call void asm sideeffect "; use $0", "v"(i32 %v214)
call void asm sideeffect "; use $0", "v"(i32 %v215)
call void asm sideeffect "; use $0", "v"(i32 %v216)
call void asm sideeffect "; use $0", "v"(i32 %v217)
call void asm sideeffect "; use $0", "v"(i32 %v218)
call void asm sideeffect "; use $0", "v"(i32 %v219)
call void asm sideeffect "; use $0", "v"(i32 %v220)
call void asm sideeffect "; use $0", "v"(i32 %v221)
call void asm sideeffect "; use $0", "v"(i32 %v222)
call void asm sideeffect "; use $0", "v"(i32 %v223)
call void asm sideeffect "; use $0", "v"(i32 %v224)
call void asm sideeffect "; use $0", "v"(i32 %v225)
call void asm sideeffect "; use $0", "v"(i32 %v226)
call void asm sideeffect "; use $0", "v"(i32 %v227)
call void asm sideeffect "; use $0", "v"(i32 %v228)
call void asm sideeffect "; use $0", "v"(i32 %v229)
call void asm sideeffect "; use $0", "v"(i32 %v230)
call void asm sideeffect "; use $0", "v"(i32 %v231)
call void asm sideeffect "; use $0", "v"(i32 %v232)
call void asm sideeffect "; use $0", "v"(i32 %v233)
call void asm sideeffect "; use $0", "v"(i32 %v234)
call void asm sideeffect "; use $0", "v"(i32 %v235)
call void asm sideeffect "; use $0", "v"(i32 %v236)
call void asm sideeffect "; use $0", "v"(i32 %v237)
call void asm sideeffect "; use $0", "v"(i32 %v238)
call void asm sideeffect "; use $0", "v"(i32 %v239)
call void asm sideeffect "; use $0", "v"(i32 %v240)
call void asm sideeffect "; use $0", "v"(i32 %v241)
call void asm sideeffect "; use $0", "v"(i32 %v242)
call void asm sideeffect "; use $0", "v"(i32 %v243)
call void asm sideeffect "; use $0", "v"(i32 %v244)
call void asm sideeffect "; use $0", "v"(i32 %v245)
call void asm sideeffect "; use $0", "v"(i32 %v246)
call void asm sideeffect "; use $0", "v"(i32 %v247)
call void asm sideeffect "; use $0", "v"(i32 %v248)
call void asm sideeffect "; use $0", "v"(i32 %v249)
call void asm sideeffect "; use $0", "v"(i32 %v250)
call void asm sideeffect "; use $0", "v"(i32 %v251)
call void asm sideeffect "; use $0", "v"(i32 %v252)
call void asm sideeffect "; use $0", "v"(i32 %v253)
call void asm sideeffect "; use $0", "v"(i32 %v254)
call void asm sideeffect "; use $0", "v"(i32 %v255)
ret void
}
define internal void @use512vgprs() {
%v0 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v1 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v2 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v3 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v4 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v5 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v6 = call <32 x i32> asm sideeffect "; def $0", "=v"()
%v7 = call <32 x i32> asm sideeffect "; def $0", "=v"()
call void @use256vgprs()
call void asm sideeffect "; use $0", "v"(<32 x i32> %v0)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v1)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v2)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v3)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v4)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v5)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v6)
call void asm sideeffect "; use $0", "v"(<32 x i32> %v7)
ret void
}
define void @foo() #0 {
ret void
}
attributes #0 = { noinline }
; GCN-LABEL: {{^}}k256_w8:
; GFX90A: NumVgprs: 32
; GFX90A: NumAgprs: 32
; GFX90A: TotalNumVgprs: 64
define amdgpu_kernel void @k256_w8() #2568 {
call void @foo()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k256_w8_no_agprs:
; GFX90A: NumVgprs: 64
; GFX90A: NumAgprs: 0
; GFX90A: TotalNumVgprs: 64
define amdgpu_kernel void @k256_w8_no_agprs() #2568 {
call void @use256vgprs()
ret void
}
attributes #2568 = { nounwind "amdgpu-flat-work-group-size"="256,256" "amdgpu-waves-per-eu"="8" }
; GCN-LABEL: {{^}}k256_w4:
; GFX90A: NumVgprs: 64
; GFX90A: NumAgprs: 64
; GFX90A: TotalNumVgprs: 128
define amdgpu_kernel void @k256_w4() #2564 {
call void @foo()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k256_w4_no_agprs:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 0
; GFX90A: TotalNumVgprs: 128
define amdgpu_kernel void @k256_w4_no_agprs() #2564 {
call void @use256vgprs()
ret void
}
attributes #2564 = { nounwind "amdgpu-flat-work-group-size"="256,256" "amdgpu-waves-per-eu"="4" }
; GCN-LABEL: {{^}}k256_w2:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 128
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k256_w2() #2562 {
call void @foo()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k256_w2_no_agprs:
; GFX90A: NumVgprs: 256
; GFX90A: NumAgprs: 0
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k256_w2_no_agprs() #2562 {
call void @use256vgprs()
ret void
}
attributes #2562 = { nounwind "amdgpu-flat-work-group-size"="256,256" "amdgpu-waves-per-eu"="2" }
; GCN-LABEL: {{^}}k256_w1:
; GFX90A: NumVgprs: 256
; GFX90A: NumAgprs: 256
; GFX90A: TotalNumVgprs: 512
define amdgpu_kernel void @k256_w1() #2561 {
call void @foo()
call void @use512vgprs()
ret void
}
; GCN-LABEL: {{^}}k256_w1_no_agprs:
; GFX90A: NumVgprs: 256
; GFX90A: NumAgprs: 256
; GFX90A: TotalNumVgprs: 512
define amdgpu_kernel void @k256_w1_no_agprs() #2561 {
call void @use512vgprs()
ret void
}
attributes #2561 = { nounwind "amdgpu-flat-work-group-size"="256,256" "amdgpu-waves-per-eu"="1" }
; GCN-LABEL: {{^}}k512_no_agprs:
; GFX90A: NumVgprs: 256
; GFX90A: NumAgprs: 0
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k512_no_agprs() #512 {
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k512_call:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 128
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k512_call() #512 {
call void @foo()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k512_virtual_agpr:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 128
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k512_virtual_agpr() #512 {
%a0 = call i32 asm sideeffect "; def $0", "=a"()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k512_physical_agpr:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 128
; GFX90A: TotalNumVgprs: 256
define amdgpu_kernel void @k512_physical_agpr() #512 {
call void asm sideeffect "", "~{a8}" ()
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}f512:
; GFX90A: NumVgprs: 12{{[0-9]}}
; GFX90A: NumAgprs: {{[1-9]}}
define void @f512() #512 {
call void @use256vgprs()
ret void
}
attributes #512 = { nounwind "amdgpu-flat-work-group-size"="512,512" }
; GCN-LABEL: {{^}}k1024:
; GFX90A: NumVgprs: 128
; GFX90A: NumAgprs: 0
; GFX90A: TotalNumVgprs: 128
define amdgpu_kernel void @k1024() #1024 {
call void @use256vgprs()
ret void
}
; GCN-LABEL: {{^}}k1024_call:
; GFX90A: NumVgprs: 64
; GFX90A: NumAgprs: 64
; GFX90A: TotalNumVgprs: 128
define amdgpu_kernel void @k1024_call() #1024 {
call void @foo()
call void @use256vgprs()
ret void
}
attributes #1024 = { nounwind "amdgpu-flat-work-group-size"="1024,1024" }