| # RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=none -filetype=null %s 2>&1 | FileCheck %s |
| |
| --- |
| name: fix-illegal-vector-copies |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| isEntryFunction: true |
| body: | |
| bb.0: |
| %0:vgpr_32 = IMPLICIT_DEF |
| %0:vgpr_32 = IMPLICIT_DEF ; Break SSA format |
| %1:vgpr_32 = IMPLICIT_DEF |
| %2:sgpr_32 = IMPLICIT_DEF |
| %3:sgpr_32 = IMPLICIT_DEF |
| %4:agpr_32 = IMPLICIT_DEF |
| %5:agpr_32 = IMPLICIT_DEF |
| |
| ; copy from virtual VGPR to virtual SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: %6:sgpr_32 = COPY %0:vgpr_32 |
| %6:sgpr_32 = COPY %0:vgpr_32 |
| |
| ; copy from virtual VGPR to physical SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr0 = COPY %0:vgpr_32 |
| $sgpr0 = COPY %0:vgpr_32 |
| |
| ; copy from physical VGPR to physical SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr1 = COPY $vgpr0 |
| $sgpr1 = COPY $vgpr0 |
| |
| ; copy from virtual AGPR to virtual SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: %7:sgpr_32 = COPY %4:agpr_32 |
| %7:sgpr_32 = COPY %4:agpr_32 |
| |
| ; copy from virtual AGPR to physical SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr2 = COPY %4:agpr_32 |
| $sgpr2 = COPY %4:agpr_32 |
| |
| ; copy from physical AGPR to physical SGPR |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr3 = COPY $agpr0 |
| $sgpr3 = COPY $agpr0 |
| |
| ; copy from tuple of physical VGPRs to tuple of physical SGPRs |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr4_sgpr5 = COPY $vgpr0_vgpr1 |
| $sgpr4_sgpr5 = COPY $vgpr0_vgpr1 |
| |
| ; copy from tuple of physical AGPRs to tuple of physical SGPRs |
| ; CHECK: *** Bad machine code: illegal copy from vector register to SGPR *** |
| ; CHECK: - instruction: $sgpr6_sgpr7 = COPY $agpr0_agpr1 |
| $sgpr6_sgpr7 = COPY $agpr0_agpr1 |
| |
| S_ENDPGM 0 |
| ... |