| # 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 | |
| ... |