1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=aarch64-apple-ios -run-pass=greedy -run-pass=virtregrewriter %s -o - | FileCheck %s
3---
4name: func0
5body: |
6  bb.0:
7    ; Make sure we don't clobber q3 when we expand the bundle
8    ; CHECK-LABEL: name: func0
9    ; CHECK: $x0 = IMPLICIT_DEF
10    ; CHECK: $q0_q1_q2_q3 = IMPLICIT_DEF
11    ; CHECK: $q4 = COPY $q3
12    ; CHECK: $q1_q2_q3 = COPY $q0_q1_q2
13    ; CHECK: ST4i64 $q1_q2_q3_q4, 0, $x0
14    $x0 = IMPLICIT_DEF
15    $q0_q1_q2_q3 = IMPLICIT_DEF
16    $q1_q2_q3 = COPY $q0_q1_q2 {
17      $q4 = COPY $q3
18    }
19    ST4i64 $q1_q2_q3_q4, 0, $x0
20
21...
22---
23name: func1
24body: |
25  bb.0:
26    ; If it was already ordered, make sure we don't break it
27    ; CHECK-LABEL: name: func1
28    ; CHECK: $x0 = IMPLICIT_DEF
29    ; CHECK: $q0_q1_q2_q3 = IMPLICIT_DEF
30    ; CHECK: $q4 = COPY $q3
31    ; CHECK: $q1_q2_q3 = COPY $q0_q1_q2
32    ; CHECK: ST4i64 $q1_q2_q3_q4, 0, $x0
33    $x0 = IMPLICIT_DEF
34    $q0_q1_q2_q3 = IMPLICIT_DEF
35    $q4 = COPY $q3 {
36      $q1_q2_q3 = COPY $q0_q1_q2
37    }
38    ST4i64 $q1_q2_q3_q4, 0, $x0
39
40...
41---
42name: func2
43body: |
44  bb.0:
45    ; A bit less realistic, but check that we handle multiple nodes
46    ; CHECK-LABEL: name: func2
47    ; CHECK: $x0 = IMPLICIT_DEF
48    ; CHECK: $q0_q1_q2_q3 = IMPLICIT_DEF
49    ; CHECK: $q3 = COPY $q2
50    ; CHECK: $q4 = COPY $q1
51    ; CHECK: $q1_q2 = COPY $q0_q1
52    ; CHECK: ST4i64 $q1_q2_q3_q4, 0, $x0
53    $x0 = IMPLICIT_DEF
54    $q0_q1_q2_q3 = IMPLICIT_DEF
55    $q1_q2 = COPY $q0_q1 {
56      $q3 = COPY $q2
57      $q4 = COPY $q1
58    }
59    ST4i64 $q1_q2_q3_q4, 0, $x0
60
61...
62---
63name: func3
64body: |
65  bb.0:
66    ; If there was nothing wrong, don't change the order for no reason
67    ; CHECK-LABEL: name: func3
68    ; CHECK: $x0 = IMPLICIT_DEF
69    ; CHECK: $q1_q2_q3_q4 = IMPLICIT_DEF
70    ; CHECK: $q0_q1 = COPY $q1_q2
71    ; CHECK: $q2_q3 = COPY $q3_q4
72    ; CHECK: ST4i64 $q0_q1_q2_q3, 0, $x0
73    $x0 = IMPLICIT_DEF
74    $q1_q2_q3_q4 = IMPLICIT_DEF
75    $q0_q1 = COPY $q1_q2 {
76      $q2_q3 = COPY $q3_q4
77    }
78    ST4i64 $q0_q1_q2_q3, 0, $x0
79
80...
81