Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-zip.mir
blob49bda326b63f31a6fde25710d34048587b28d067
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
3 # Check that we can select G_ZIP1 and G_ZIP2 via the tablegen importer.
5 # RUN: llc -mtriple aarch64 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
7 ...
8 ---
9 name:            zip1_v2s32
10 alignment:       4
11 legalized:       true
12 regBankSelected: true
13 tracksRegLiveness: true
14 body:             |
15   bb.1.entry:
16     liveins: $d0, $d1
18     ; CHECK-LABEL: name: zip1_v2s32
19     ; CHECK: liveins: $d0, $d1
20     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
21     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
22     ; CHECK: [[ZIP1v2i32_:%[0-9]+]]:fpr64 = ZIP1v2i32 [[COPY]], [[COPY1]]
23     ; CHECK: $d0 = COPY [[ZIP1v2i32_]]
24     ; CHECK: RET_ReallyLR implicit $d0
25     %0:fpr(<2 x s32>) = COPY $d0
26     %1:fpr(<2 x s32>) = COPY $d1
27     %2:fpr(<2 x s32>) = G_ZIP1 %0, %1
28     $d0 = COPY %2(<2 x s32>)
29     RET_ReallyLR implicit $d0
30 ...
31 ---
32 name:            zip1_v2s64
33 alignment:       4
34 legalized:       true
35 regBankSelected: true
36 tracksRegLiveness: true
37 body:             |
38   bb.1.entry:
39     liveins: $q0, $q1
41     ; CHECK-LABEL: name: zip1_v2s64
42     ; CHECK: liveins: $q0, $q1
43     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
44     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
45     ; CHECK: [[ZIP1v2i64_:%[0-9]+]]:fpr128 = ZIP1v2i64 [[COPY]], [[COPY1]]
46     ; CHECK: $q0 = COPY [[ZIP1v2i64_]]
47     ; CHECK: RET_ReallyLR implicit $q0
48     %0:fpr(<2 x s64>) = COPY $q0
49     %1:fpr(<2 x s64>) = COPY $q1
50     %2:fpr(<2 x s64>) = G_ZIP1 %0, %1
51     $q0 = COPY %2(<2 x s64>)
52     RET_ReallyLR implicit $q0
53 ...
54 ---
55 name:            zip1_v4s32
56 alignment:       4
57 legalized:       true
58 regBankSelected: true
59 tracksRegLiveness: true
60 body:             |
61   bb.1.entry:
62     liveins: $q0, $q1
63     ; CHECK-LABEL: name: zip1_v4s32
64     ; CHECK: liveins: $q0, $q1
65     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
66     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
67     ; CHECK: [[ZIP1v4i32_:%[0-9]+]]:fpr128 = ZIP1v4i32 [[COPY]], [[COPY1]]
68     ; CHECK: $q0 = COPY [[ZIP1v4i32_]]
69     ; CHECK: RET_ReallyLR implicit $q0
70     %0:fpr(<4 x s32>) = COPY $q0
71     %1:fpr(<4 x s32>) = COPY $q1
72     %2:fpr(<4 x s32>) = G_ZIP1 %0, %1
73     $q0 = COPY %2(<4 x s32>)
74     RET_ReallyLR implicit $q0
75 ...
76 ---
77 name:            zip2_v2s32
78 alignment:       4
79 legalized:       true
80 regBankSelected: true
81 tracksRegLiveness: true
82 body:             |
83   bb.1.entry:
84     liveins: $d0, $d1
86     ; CHECK-LABEL: name: zip2_v2s32
87     ; CHECK: liveins: $d0, $d1
88     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
89     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
90     ; CHECK: [[ZIP2v2i32_:%[0-9]+]]:fpr64 = ZIP2v2i32 [[COPY]], [[COPY1]]
91     ; CHECK: $d0 = COPY [[ZIP2v2i32_]]
92     ; CHECK: RET_ReallyLR implicit $d0
93     %0:fpr(<2 x s32>) = COPY $d0
94     %1:fpr(<2 x s32>) = COPY $d1
95     %2:fpr(<2 x s32>) = G_ZIP2 %0, %1
96     $d0 = COPY %2(<2 x s32>)
97     RET_ReallyLR implicit $d0
98 ...
99 ---
100 name:            zip2_v2s64
101 alignment:       4
102 legalized:       true
103 regBankSelected: true
104 tracksRegLiveness: true
105 body:             |
106   bb.1.entry:
107     liveins: $q0, $q1
109     ; CHECK-LABEL: name: zip2_v2s64
110     ; CHECK: liveins: $q0, $q1
111     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
112     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
113     ; CHECK: [[ZIP2v2i64_:%[0-9]+]]:fpr128 = ZIP2v2i64 [[COPY]], [[COPY1]]
114     ; CHECK: $q0 = COPY [[ZIP2v2i64_]]
115     ; CHECK: RET_ReallyLR implicit $q0
116     %0:fpr(<2 x s64>) = COPY $q0
117     %1:fpr(<2 x s64>) = COPY $q1
118     %2:fpr(<2 x s64>) = G_ZIP2 %0, %1
119     $q0 = COPY %2(<2 x s64>)
120     RET_ReallyLR implicit $q0
123 name:            zip2_v4s32
124 alignment:       4
125 legalized:       true
126 regBankSelected: true
127 tracksRegLiveness: true
128 body:             |
129   bb.1.entry:
130     liveins: $d0, $d1
131     ; CHECK-LABEL: name: zip2_v4s32
132     ; CHECK: liveins: $d0, $d1
133     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
134     ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
135     ; CHECK: [[ZIP2v4i32_:%[0-9]+]]:fpr128 = ZIP2v4i32 [[COPY]], [[COPY1]]
136     ; CHECK: $q0 = COPY [[ZIP2v4i32_]]
137     ; CHECK: RET_ReallyLR implicit $q0
138     %0:fpr(<4 x s32>) = COPY $q0
139     %1:fpr(<4 x s32>) = COPY $q1
140     %2:fpr(<4 x s32>) = G_ZIP2 %0, %1
141     $q0 = COPY %2(<4 x s32>)
142     RET_ReallyLR implicit $q0