# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -mtriple=amdgcn -mcpu=gfx90a -run-pass=amdgpu-regbankselect,amdgpu-regbanklegalize %s -o - | FileCheck %s --- name: assert_align_vgpr_s32 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: assert_align_vgpr_s32 ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr(s32) = COPY $vgpr0 ; CHECK-NEXT: %assert_align:vgpr(s32) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s32) %copy:_(s32) = COPY $vgpr0 %assert_align:_(s32) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_sgpr_s32 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $sgpr8 ; CHECK-LABEL: name: assert_align_sgpr_s32 ; CHECK: liveins: $sgpr8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:sgpr(s32) = COPY $sgpr8 ; CHECK-NEXT: %assert_align:sgpr(s32) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s32) %copy:_(s32) = COPY $sgpr8 %assert_align:_(s32) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_agpr_s32 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $agpr0 ; CHECK-LABEL: name: assert_align_agpr_s32 ; CHECK: liveins: $agpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr(s32) = COPY $agpr0 ; CHECK-NEXT: %assert_align:vgpr(s32) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s32) %copy:_(s32) = COPY $agpr0 %assert_align:_(s32) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_vgpr_s32_regclass alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $vgpr0 ; CHECK-LABEL: name: assert_align_vgpr_s32_regclass ; CHECK: liveins: $vgpr0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr_32(s32) = COPY $vgpr0 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY %copy(s32) ; CHECK-NEXT: %assert_align:vgpr(s32) = G_ASSERT_ALIGN [[COPY]], 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s32) %copy:vgpr_32(s32) = COPY $vgpr0 %assert_align:_(s32) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_sgpr_s32_regclass alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $sgpr8 ; CHECK-LABEL: name: assert_align_sgpr_s32_regclass ; CHECK: liveins: $sgpr8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:sgpr_32(s32) = COPY $sgpr8 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY %copy(s32) ; CHECK-NEXT: %assert_align:sgpr(s32) = G_ASSERT_ALIGN [[COPY]], 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s32) %copy:sgpr_32(s32) = COPY $sgpr8 %assert_align:_(s32) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_vgpr_s64 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: assert_align_vgpr_s64 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vreg_64(s64) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY %copy(s64) ; CHECK-NEXT: [[ASSERT_ALIGN:%[0-9]+]]:vgpr(s64) = G_ASSERT_ALIGN [[COPY]], 4 ; CHECK-NEXT: %assert_align:vreg_64(s64) = COPY [[ASSERT_ALIGN]](s64) ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s64) %copy:vreg_64(s64) = COPY $vgpr0_vgpr1 %assert_align:vreg_64(s64) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_sgpr_s64 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $sgpr0_sgpr1 ; CHECK-LABEL: name: assert_align_sgpr_s64 ; CHECK: liveins: $sgpr0_sgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:sreg_64(s64) = COPY $sgpr0_sgpr1 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY %copy(s64) ; CHECK-NEXT: [[ASSERT_ALIGN:%[0-9]+]]:sgpr(s64) = G_ASSERT_ALIGN [[COPY]], 4 ; CHECK-NEXT: %assert_align:sreg_64(s64) = COPY [[ASSERT_ALIGN]](s64) ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s64) %copy:sreg_64(s64) = COPY $sgpr0_sgpr1 %assert_align:sreg_64(s64) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_agpr_s64 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $agpr0_agpr1 ; CHECK-LABEL: name: assert_align_agpr_s64 ; CHECK: liveins: $agpr0_agpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:areg_64(s64) = COPY $agpr0_agpr1 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s64) = COPY %copy(s64) ; CHECK-NEXT: [[ASSERT_ALIGN:%[0-9]+]]:vgpr(s64) = G_ASSERT_ALIGN [[COPY]], 4 ; CHECK-NEXT: %assert_align:areg_64(s64) = COPY [[ASSERT_ALIGN]](s64) ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(s64) %copy:areg_64(s64) = COPY $agpr0_agpr1 %assert_align:areg_64(s64) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_vgpr_p1 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: assert_align_vgpr_p1 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr(p1) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: %assert_align:vgpr(p1) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(p1) %copy:_(p1) = COPY $vgpr0_vgpr1 %assert_align:_(p1) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_sgpr_p1 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $sgpr8_sgpr9 ; CHECK-LABEL: name: assert_align_sgpr_p1 ; CHECK: liveins: $sgpr8_sgpr9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:sgpr(p1) = COPY $sgpr8_sgpr9 ; CHECK-NEXT: %assert_align:sgpr(p1) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(p1) %copy:_(p1) = COPY $sgpr8_sgpr9 %assert_align:_(p1) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_agpr_p1 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $agpr0_agpr1 ; CHECK-LABEL: name: assert_align_agpr_p1 ; CHECK: liveins: $agpr0_agpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr(p1) = COPY $agpr0_agpr1 ; CHECK-NEXT: %assert_align:vgpr(p1) = G_ASSERT_ALIGN %copy, 4 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(p1) %copy:_(p1) = COPY $agpr0_agpr1 %assert_align:_(p1) = G_ASSERT_ALIGN %copy, 4 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_vgpr_p0 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $vgpr0_vgpr1 ; CHECK-LABEL: name: assert_align_vgpr_p0 ; CHECK: liveins: $vgpr0_vgpr1 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:vgpr(p0) = COPY $vgpr0_vgpr1 ; CHECK-NEXT: %assert_align:vgpr(p0) = G_ASSERT_ALIGN %copy, 8 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(p0) %copy:_(p0) = COPY $vgpr0_vgpr1 %assert_align:_(p0) = G_ASSERT_ALIGN %copy, 8 S_ENDPGM 0, implicit %assert_align ... --- name: assert_align_sgpr_p0 alignment: 4 legalized: true tracksRegLiveness: true body: | bb.0: liveins: $sgpr8_sgpr9 ; CHECK-LABEL: name: assert_align_sgpr_p0 ; CHECK: liveins: $sgpr8_sgpr9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: %copy:sgpr(p0) = COPY $sgpr8_sgpr9 ; CHECK-NEXT: %assert_align:sgpr(p0) = G_ASSERT_ALIGN %copy, 8 ; CHECK-NEXT: S_ENDPGM 0, implicit %assert_align(p0) %copy:_(p0) = COPY $sgpr8_sgpr9 %assert_align:_(p0) = G_ASSERT_ALIGN %copy, 8 S_ENDPGM 0, implicit %assert_align ...