[Alignment][NFC] migrate DataLayout internal struct to llvm::Align
[llvm-core.git] / test / CodeGen / AArch64 / overlapping-copy-bundle.mir
blob84f39ea939859b513709ae700095c3e4bb96d761
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 ---
4 name: func0
5 body: |
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
21 ...
22 ---
23 name: func1
24 body: |
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
40 ...
41 ---
42 name: func2
43 body: |
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
61 ...
62 ---
63 name: func3
64 body: |
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
80 ...