| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 |
| # RUN: llc -mtriple=aarch64 -mattr=+sve -run-pass=aarch64-expand-pseudo -verify-machineinstrs %s -o - | FileCheck %s |
| |
| # Test the expansion of constructive binary operations into their |
| # destructive counterparts. |
| |
| |
| # EXT_ZZI_CONSTRUCTIVE |
| |
| --- |
| name: test_ext_zzi_unique |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: test_ext_zzi_unique |
| ; CHECK: BUNDLE implicit-def $z2, implicit killed $z0 { |
| ; CHECK-NEXT: $z2 = MOVPRFX_ZZ $z0 |
| ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, killed $z0, 1 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: RET undef $lr, implicit killed $z2 |
| $z2 = EXT_ZZI_CONSTRUCTIVE killed $z0, 1 |
| RET_ReallyLR implicit killed $z2 |
| ... |
| |
| --- |
| name: test_ext_zzi_already_destructive |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: test_ext_zzi_already_destructive |
| ; CHECK: $z2 = EXT_ZZI killed $z2, killed $z2, 1 |
| ; CHECK-NEXT: RET undef $lr, implicit killed $z2 |
| $z2 = EXT_ZZI_CONSTRUCTIVE killed $z2, 1 |
| RET_ReallyLR implicit killed $z2 |
| ... |
| |
| --- |
| name: test_ext_zzi_unique_implicit_ops |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: test_ext_zzi_unique_implicit_ops |
| ; CHECK: BUNDLE implicit-def $z2, implicit-def $q2, implicit killed $z0, implicit killed $q0 { |
| ; CHECK-NEXT: $z2 = MOVPRFX_ZZ $z0, implicit killed $q0 |
| ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, killed $z0, 1, implicit-def $q2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: RET undef $lr, implicit killed $q2 |
| $z2 = EXT_ZZI_CONSTRUCTIVE killed $z0, 1, implicit-def $q2, implicit killed $q0 |
| RET_ReallyLR implicit killed $q2 |
| ... |
| |
| --- |
| name: test_ext_zzi_undef |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: test_ext_zzi_undef |
| ; CHECK: BUNDLE implicit-def $z2, implicit undef $z0 { |
| ; CHECK-NEXT: $z2 = MOVPRFX_ZZ undef $z0 |
| ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, undef $z0, 1 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: RET undef $lr, implicit killed $z2 |
| $z2 = EXT_ZZI_CONSTRUCTIVE undef $z0, 1 |
| RET_ReallyLR implicit killed $z2 |
| ... |