blob: 63b40e0218c15a70edbf6446fae5e46eecd2e6f9 [file]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgpu11.00 -mattr=+real-true16 %s -run-pass=si-shrink-instructions -verify-machineinstrs -o - | FileCheck -check-prefixes=GCN %s
# Should not shrink 16 bit instructions preRA
---
name: preRA
tracksRegLiveness: true
body: |
bb.0:
; GCN-LABEL: name: preRA
; GCN: [[DEF:%[0-9]+]]:vreg_128 = IMPLICIT_DEF
; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 [[DEF]].sub1, implicit $exec
; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[DEF]].sub3
; GCN-NEXT: [[V_ADD_F16_t16_e64_:%[0-9]+]]:vgpr_16 = V_ADD_F16_t16_e64 0, [[V_MOV_B32_e32_]].hi16, 0, [[COPY]].lo16, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_F16_t16_e64_]]
%0:vreg_128 = IMPLICIT_DEF
%3:vgpr_32 = V_MOV_B32_e32 %0.sub1, implicit $exec
%4:vgpr_32 = COPY %0.sub3
%5:vgpr_16 = V_ADD_F16_t16_e64 0, %3.hi16, 0, %4.lo16, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0, implicit %5
...
---
name: postRA
tracksRegLiveness: true
body: |
bb.0:
; GCN-LABEL: name: postRA
; GCN: renamable $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
; GCN-NEXT: renamable $vgpr1_hi16 = V_ADD_F16_t16_e32 $vgpr1_hi16, undef $vgpr1_lo16, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr1_hi16
renamable $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
renamable $vgpr1_hi16 = V_ADD_F16_t16_e64 0, $vgpr1_hi16, 0, undef $vgpr1_lo16, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0, implicit killed renamable $vgpr1_hi16
...
# Should not shrink 16 bit instructions if they use vgpr not addressable in 32bit encoding
---
name: postRA_noShrink
tracksRegLiveness: true
body: |
bb.0:
; GCN-LABEL: name: postRA_noShrink
; GCN: renamable $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
; GCN-NEXT: renamable $vgpr1_hi16 = V_ADD_F16_t16_e64 0, $vgpr199_hi16, 0, undef $vgpr1_lo16, 0, 0, 0, implicit $mode, implicit $exec
; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr1_hi16
renamable $vgpr1 = V_MOV_B32_e32 undef $vgpr1, implicit $exec
renamable $vgpr1_hi16 = V_ADD_F16_t16_e64 0, $vgpr199_hi16, 0, undef $vgpr1_lo16, 0, 0, 0, implicit $mode, implicit $exec
S_ENDPGM 0, implicit killed renamable $vgpr1_hi16
...