blob: 55287712b12c3ecc90fda440847a644ed3647bcf [file] [log] [blame]
# 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
...