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
13 tracksRegLiveness: true
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
36 tracksRegLiveness: true
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
59 tracksRegLiveness: true
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
81 tracksRegLiveness: true
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
103 regBankSelected: true
104 tracksRegLiveness: true
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
126 regBankSelected: true
127 tracksRegLiveness: true
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