60 lines
2.3 KiB
YAML
60 lines
2.3 KiB
YAML
# RUN: not --crash llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=none -o /dev/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
|
|
...
|