217 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx90a -run-pass=amdgpu-prepare-agpr-alloc -o - %s | FileCheck -check-prefixes=HAS-AGPR,GFX90A %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=amdgpu-prepare-agpr-alloc -o - %s | FileCheck -check-prefixes=HAS-AGPR,GFX908 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx906 -passes=amdgpu-prepare-agpr-alloc -o - %s | FileCheck -check-prefix=NO-AGPR %s5 6--- |7 define void @func() {8 ret void9 }10 11 ; Attribute is ignored for gfx90a12 define void @no_agprs() "amdgpu-agpr-alloc"="0,0" {13 ret void14 }15 16 define void @func64() {17 ret void18 }19 20 define void @func64_no_agprs() "amdgpu-agpr-alloc"="0,0" {21 ret void22 }23 24...25---26name: func27tracksRegLiveness: true28stack:29 - { id: 0, size: 4 }30body: |31 ; HAS-AGPR-LABEL: name: func32 ; HAS-AGPR: bb.0:33 ; HAS-AGPR-NEXT: successors: %bb.1(0x80000000)34 ; HAS-AGPR-NEXT: liveins: $vgpr035 ; HAS-AGPR-NEXT: {{ $}}36 ; HAS-AGPR-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 $vgpr0, implicit $exec37 ; HAS-AGPR-NEXT: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec38 ; HAS-AGPR-NEXT: [[AV_MOV_:%[0-9]+]]:vgpr_32 = AV_MOV_B32_IMM_PSEUDO 1, implicit $exec39 ; HAS-AGPR-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65, implicit $exec40 ; HAS-AGPR-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec41 ; HAS-AGPR-NEXT: [[AV_MOV_1:%[0-9]+]]:agpr_32 = AV_MOV_B32_IMM_PSEUDO 2, implicit $exec42 ; HAS-AGPR-NEXT: [[AV_MOV_2:%[0-9]+]]:agpr_32 = AV_MOV_B32_IMM_PSEUDO 6, implicit $exec43 ; HAS-AGPR-NEXT: {{ $}}44 ; HAS-AGPR-NEXT: bb.1:45 ; HAS-AGPR-NEXT: [[AV_MOV_3:%[0-9]+]]:vgpr_32 = AV_MOV_B32_IMM_PSEUDO 3, implicit $exec46 ;47 ; NO-AGPR-LABEL: name: func48 ; NO-AGPR: bb.0:49 ; NO-AGPR-NEXT: successors: %bb.1(0x80000000)50 ; NO-AGPR-NEXT: liveins: $vgpr051 ; NO-AGPR-NEXT: {{ $}}52 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 $vgpr0, implicit $exec53 ; NO-AGPR-NEXT: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec54 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec55 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65, implicit $exec56 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_3:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec57 ; NO-AGPR-NEXT: [[V_ACCVGPR_WRITE_B32_e64_1:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec58 ; NO-AGPR-NEXT: [[V_ACCVGPR_WRITE_B32_e64_2:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 6, implicit $exec59 ; NO-AGPR-NEXT: {{ $}}60 ; NO-AGPR-NEXT: bb.1:61 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_4:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 3, implicit $exec62 bb.0:63 liveins: $vgpr064 %0:vgpr_32 = V_MOV_B32_e32 $vgpr0, implicit $exec65 %1:agpr_32 = V_ACCVGPR_WRITE_B32_e64 $vgpr0, implicit $exec66 %2:vgpr_32 = V_MOV_B32_e32 1, implicit $exec67 %3:vgpr_32 = V_MOV_B32_e32 65, implicit $exec68 %4:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec69 %5:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec70 %6:agpr_32 = V_ACCVGPR_WRITE_B32_e64 6, implicit $exec71 72 bb.1:73 %7:vgpr_32 = V_MOV_B32_e32 3, implicit $exec74 75...76 77---78name: no_agprs79tracksRegLiveness: true80body: |81 bb.0:82 liveins: $vgpr083 ; GFX90A-LABEL: name: no_agprs84 ; GFX90A: liveins: $vgpr085 ; GFX90A-NEXT: {{ $}}86 ; GFX90A-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec87 ; GFX90A-NEXT: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec88 ;89 ; GFX908-LABEL: name: no_agprs90 ; GFX908: liveins: $vgpr091 ; GFX908-NEXT: {{ $}}92 ; GFX908-NEXT: [[AV_MOV_:%[0-9]+]]:vgpr_32 = AV_MOV_B32_IMM_PSEUDO 1, implicit $exec93 ; GFX908-NEXT: [[AV_MOV_1:%[0-9]+]]:agpr_32 = AV_MOV_B32_IMM_PSEUDO 2, implicit $exec94 ;95 ; NO-AGPR-LABEL: name: no_agprs96 ; NO-AGPR: liveins: $vgpr097 ; NO-AGPR-NEXT: {{ $}}98 ; NO-AGPR-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec99 ; NO-AGPR-NEXT: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec100 %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec101 %1:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec102 103...104 105---106name: func64107tracksRegLiveness: true108stack:109 - { id: 0, size: 4 }110body: |111 ; HAS-AGPR-LABEL: name: func64112 ; HAS-AGPR: bb.0:113 ; HAS-AGPR-NEXT: successors: %bb.1(0x80000000)114 ; HAS-AGPR-NEXT: liveins: $vgpr0_vgpr1115 ; HAS-AGPR-NEXT: {{ $}}116 ; HAS-AGPR-NEXT: [[V_MOV_B64_e64_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 $vgpr0_vgpr1, implicit $exec117 ; HAS-AGPR-NEXT: [[AV_MOV_:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 54, implicit $exec118 ; HAS-AGPR-NEXT: [[AV_MOV_1:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 1, implicit $exec119 ; HAS-AGPR-NEXT: [[AV_MOV_2:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 64, implicit $exec120 ; HAS-AGPR-NEXT: [[V_MOV_B64_e64_1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 %stack.0, implicit $exec121 ; HAS-AGPR-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 65, implicit $exec122 ; HAS-AGPR-NEXT: [[V_MOV_B1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874240, implicit $exec123 ; HAS-AGPR-NEXT: [[V_MOV_B2:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874305, implicit $exec124 ; HAS-AGPR-NEXT: [[V_MOV_B3:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec125 ; HAS-AGPR-NEXT: [[V_MOV_B4:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO -9223372036854775808, implicit $exec126 ; HAS-AGPR-NEXT: [[AV_MOV_3:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 1042479491, implicit $exec127 ; HAS-AGPR-NEXT: [[AV_MOV_4:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 4477415320595726336, implicit $exec128 ; HAS-AGPR-NEXT: [[V_MOV_B5:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO $vgpr0_vgpr1, implicit $exec129 ; HAS-AGPR-NEXT: [[V_MOV_B6:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO %stack.0, implicit $exec130 ; HAS-AGPR-NEXT: {{ $}}131 ; HAS-AGPR-NEXT: bb.1:132 ; HAS-AGPR-NEXT: [[AV_MOV_5:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 3, implicit $exec133 ;134 ; NO-AGPR-LABEL: name: func64135 ; NO-AGPR: bb.0:136 ; NO-AGPR-NEXT: successors: %bb.1(0x80000000)137 ; NO-AGPR-NEXT: liveins: $vgpr0_vgpr1138 ; NO-AGPR-NEXT: {{ $}}139 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 $vgpr0_vgpr1, implicit $exec140 ; NO-AGPR-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 54, implicit $exec141 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 1, implicit $exec142 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_2:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 64, implicit $exec143 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_3:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 %stack.0, implicit $exec144 ; NO-AGPR-NEXT: [[V_MOV_B1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 65, implicit $exec145 ; NO-AGPR-NEXT: [[V_MOV_B2:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874240, implicit $exec146 ; NO-AGPR-NEXT: [[V_MOV_B3:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874305, implicit $exec147 ; NO-AGPR-NEXT: [[V_MOV_B4:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec148 ; NO-AGPR-NEXT: [[V_MOV_B5:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO -9223372036854775808, implicit $exec149 ; NO-AGPR-NEXT: [[V_MOV_B6:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 1042479491, implicit $exec150 ; NO-AGPR-NEXT: [[V_MOV_B7:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4477415320595726336, implicit $exec151 ; NO-AGPR-NEXT: [[V_MOV_B8:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO $vgpr0_vgpr1, implicit $exec152 ; NO-AGPR-NEXT: [[V_MOV_B9:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO %stack.0, implicit $exec153 ; NO-AGPR-NEXT: {{ $}}154 ; NO-AGPR-NEXT: bb.1:155 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_4:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 3, implicit $exec156 bb.0:157 liveins: $vgpr0_vgpr1158 %0:vreg_64_align2 = V_MOV_B64_e64 $vgpr0_vgpr1, implicit $exec159 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 54, implicit $exec160 %2:vreg_64_align2 = V_MOV_B64_e64 1, implicit $exec161 %3:vreg_64_align2 = V_MOV_B64_e64 64, implicit $exec162 %4:vreg_64_align2 = V_MOV_B64_e64 %stack.0, implicit $exec163 %5:vreg_64_align2 = V_MOV_B64_PSEUDO 65, implicit $exec164 %6:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874240, implicit $exec165 %7:vreg_64_align2 = V_MOV_B64_PSEUDO 279172874305, implicit $exec166 %8:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec167 %9:vreg_64_align2 = V_MOV_B64_PSEUDO 9223372036854775808, implicit $exec168 %10:vreg_64_align2 = V_MOV_B64_PSEUDO 1042479491, implicit $exec169 %11:vreg_64_align2 = V_MOV_B64_PSEUDO 4477415320595726336, implicit $exec170 %12:vreg_64_align2 = V_MOV_B64_PSEUDO $vgpr0_vgpr1, implicit $exec171 %13:vreg_64_align2 = V_MOV_B64_PSEUDO %stack.0, implicit $exec172 173 bb.1:174 %14:vreg_64_align2 = V_MOV_B64_e64 3, implicit $exec175 176...177 178---179name: func64_no_agprs180tracksRegLiveness: true181body: |182 bb.0:183 liveins: $vgpr0184 ; GFX90A-LABEL: name: func64_no_agprs185 ; GFX90A: liveins: $vgpr0186 ; GFX90A-NEXT: {{ $}}187 ; GFX90A-NEXT: [[V_MOV_B64_e64_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 1, implicit $exec188 ; GFX90A-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec189 ; GFX90A-NEXT: [[V_MOV_B1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO -9223372036854775808, implicit $exec190 ; GFX90A-NEXT: [[V_MOV_B2:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 1042479491, implicit $exec191 ; GFX90A-NEXT: [[V_MOV_B3:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4477415320595726336, implicit $exec192 ;193 ; GFX908-LABEL: name: func64_no_agprs194 ; GFX908: liveins: $vgpr0195 ; GFX908-NEXT: {{ $}}196 ; GFX908-NEXT: [[AV_MOV_:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 1, implicit $exec197 ; GFX908-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec198 ; GFX908-NEXT: [[V_MOV_B1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO -9223372036854775808, implicit $exec199 ; GFX908-NEXT: [[AV_MOV_1:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 1042479491, implicit $exec200 ; GFX908-NEXT: [[AV_MOV_2:%[0-9]+]]:vreg_64_align2 = AV_MOV_B64_IMM_PSEUDO 4477415320595726336, implicit $exec201 ;202 ; NO-AGPR-LABEL: name: func64_no_agprs203 ; NO-AGPR: liveins: $vgpr0204 ; NO-AGPR-NEXT: {{ $}}205 ; NO-AGPR-NEXT: [[V_MOV_B64_e64_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e64 1, implicit $exec206 ; NO-AGPR-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec207 ; NO-AGPR-NEXT: [[V_MOV_B1:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO -9223372036854775808, implicit $exec208 ; NO-AGPR-NEXT: [[V_MOV_B2:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 1042479491, implicit $exec209 ; NO-AGPR-NEXT: [[V_MOV_B3:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4477415320595726336, implicit $exec210 %0:vreg_64_align2 = V_MOV_B64_e64 1, implicit $exec211 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329938, implicit $exec212 %2:vreg_64_align2 = V_MOV_B64_PSEUDO 9223372036854775808, implicit $exec213 %3:vreg_64_align2 = V_MOV_B64_PSEUDO 1042479491, implicit $exec214 %4:vreg_64_align2 = V_MOV_B64_PSEUDO 4477415320595726336, implicit $exec215 216...217