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