62 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=aarch64 -mattr=+sve -run-pass=aarch64-expand-pseudo -verify-machineinstrs %s -o - | FileCheck %s3 4# Test the expansion of constructive binary operations into their5# destructive counterparts.6 7 8# EXT_ZZI_CONSTRUCTIVE9 10---11name: test_ext_zzi_unique12body: |13 bb.0:14 ; CHECK-LABEL: name: test_ext_zzi_unique15 ; CHECK: BUNDLE implicit-def $z2, implicit killed $z0 {16 ; CHECK-NEXT: $z2 = MOVPRFX_ZZ $z017 ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, killed $z0, 118 ; CHECK-NEXT: }19 ; CHECK-NEXT: RET undef $lr, implicit killed $z220 $z2 = EXT_ZZI_CONSTRUCTIVE killed $z0, 121 RET_ReallyLR implicit killed $z222...23 24---25name: test_ext_zzi_already_destructive26body: |27 bb.0:28 ; CHECK-LABEL: name: test_ext_zzi_already_destructive29 ; CHECK: $z2 = EXT_ZZI killed $z2, killed $z2, 130 ; CHECK-NEXT: RET undef $lr, implicit killed $z231 $z2 = EXT_ZZI_CONSTRUCTIVE killed $z2, 132 RET_ReallyLR implicit killed $z233...34 35---36name: test_ext_zzi_unique_implicit_ops37body: |38 bb.0:39 ; CHECK-LABEL: name: test_ext_zzi_unique_implicit_ops40 ; CHECK: BUNDLE implicit-def $z2, implicit-def $q2, implicit killed $z0, implicit killed $q0 {41 ; CHECK-NEXT: $z2 = MOVPRFX_ZZ $z0, implicit killed $q042 ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, killed $z0, 1, implicit-def $q243 ; CHECK-NEXT: }44 ; CHECK-NEXT: RET undef $lr, implicit killed $q245 $z2 = EXT_ZZI_CONSTRUCTIVE killed $z0, 1, implicit-def $q2, implicit killed $q046 RET_ReallyLR implicit killed $q247...48 49---50name: test_ext_zzi_undef51body: |52 bb.0:53 ; CHECK-LABEL: name: test_ext_zzi_undef54 ; CHECK: BUNDLE implicit-def $z2, implicit undef $z0 {55 ; CHECK-NEXT: $z2 = MOVPRFX_ZZ undef $z056 ; CHECK-NEXT: $z2 = EXT_ZZI internal killed $z2, undef $z0, 157 ; CHECK-NEXT: }58 ; CHECK-NEXT: RET undef $lr, implicit killed $z259 $z2 = EXT_ZZI_CONSTRUCTIVE undef $z0, 160 RET_ReallyLR implicit killed $z261...62