@@ -71,9 +71,7 @@ define <8 x i16> @sabdl2_8h(ptr %A, ptr %B) nounwind {
71
71
; CHECK-GI: // %bb.0:
72
72
; CHECK-GI-NEXT: ldr q0, [x0]
73
73
; CHECK-GI-NEXT: ldr q1, [x1]
74
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
75
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
76
- ; CHECK-GI-NEXT: sabdl.8h v0, v0, v1
74
+ ; CHECK-GI-NEXT: sabdl2.8h v0, v0, v1
77
75
; CHECK-GI-NEXT: ret
78
76
%load1 = load <16 x i8 >, ptr %A
79
77
%load2 = load <16 x i8 >, ptr %B
@@ -96,9 +94,7 @@ define <4 x i32> @sabdl2_4s(ptr %A, ptr %B) nounwind {
96
94
; CHECK-GI: // %bb.0:
97
95
; CHECK-GI-NEXT: ldr q0, [x0]
98
96
; CHECK-GI-NEXT: ldr q1, [x1]
99
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
100
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
101
- ; CHECK-GI-NEXT: sabdl.4s v0, v0, v1
97
+ ; CHECK-GI-NEXT: sabdl2.4s v0, v0, v1
102
98
; CHECK-GI-NEXT: ret
103
99
%load1 = load <8 x i16 >, ptr %A
104
100
%load2 = load <8 x i16 >, ptr %B
@@ -121,9 +117,7 @@ define <2 x i64> @sabdl2_2d(ptr %A, ptr %B) nounwind {
121
117
; CHECK-GI: // %bb.0:
122
118
; CHECK-GI-NEXT: ldr q0, [x0]
123
119
; CHECK-GI-NEXT: ldr q1, [x1]
124
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
125
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
126
- ; CHECK-GI-NEXT: sabdl.2d v0, v0, v1
120
+ ; CHECK-GI-NEXT: sabdl2.2d v0, v0, v1
127
121
; CHECK-GI-NEXT: ret
128
122
%load1 = load <4 x i32 >, ptr %A
129
123
%load2 = load <4 x i32 >, ptr %B
@@ -188,9 +182,7 @@ define <8 x i16> @uabdl2_8h(ptr %A, ptr %B) nounwind {
188
182
; CHECK-GI: // %bb.0:
189
183
; CHECK-GI-NEXT: ldr q0, [x0]
190
184
; CHECK-GI-NEXT: ldr q1, [x1]
191
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
192
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
193
- ; CHECK-GI-NEXT: uabdl.8h v0, v0, v1
185
+ ; CHECK-GI-NEXT: uabdl2.8h v0, v0, v1
194
186
; CHECK-GI-NEXT: ret
195
187
%load1 = load <16 x i8 >, ptr %A
196
188
%load2 = load <16 x i8 >, ptr %B
@@ -214,9 +206,7 @@ define <4 x i32> @uabdl2_4s(ptr %A, ptr %B) nounwind {
214
206
; CHECK-GI: // %bb.0:
215
207
; CHECK-GI-NEXT: ldr q0, [x0]
216
208
; CHECK-GI-NEXT: ldr q1, [x1]
217
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
218
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
219
- ; CHECK-GI-NEXT: uabdl.4s v0, v0, v1
209
+ ; CHECK-GI-NEXT: uabdl2.4s v0, v0, v1
220
210
; CHECK-GI-NEXT: ret
221
211
%load1 = load <8 x i16 >, ptr %A
222
212
%load2 = load <8 x i16 >, ptr %B
@@ -239,9 +229,7 @@ define <2 x i64> @uabdl2_2d(ptr %A, ptr %B) nounwind {
239
229
; CHECK-GI: // %bb.0:
240
230
; CHECK-GI-NEXT: ldr q0, [x0]
241
231
; CHECK-GI-NEXT: ldr q1, [x1]
242
- ; CHECK-GI-NEXT: ext.16b v0, v0, v0, #8
243
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
244
- ; CHECK-GI-NEXT: uabdl.2d v0, v0, v1
232
+ ; CHECK-GI-NEXT: uabdl2.2d v0, v0, v1
245
233
; CHECK-GI-NEXT: ret
246
234
%load1 = load <4 x i32 >, ptr %A
247
235
%load2 = load <4 x i32 >, ptr %B
@@ -1132,12 +1120,10 @@ define <8 x i16> @sabal2_8h(ptr %A, ptr %B, ptr %C) nounwind {
1132
1120
;
1133
1121
; CHECK-GI-LABEL: sabal2_8h:
1134
1122
; CHECK-GI: // %bb.0:
1135
- ; CHECK-GI-NEXT: ldr q0, [x0]
1136
- ; CHECK-GI-NEXT: ldr q1, [x1]
1137
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1138
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1123
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1124
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1139
1125
; CHECK-GI-NEXT: ldr q0, [x2]
1140
- ; CHECK-GI-NEXT: sabal .8h v0, v2, v1
1126
+ ; CHECK-GI-NEXT: sabal2 .8h v0, v1, v2
1141
1127
; CHECK-GI-NEXT: ret
1142
1128
%load1 = load <16 x i8 >, ptr %A
1143
1129
%load2 = load <16 x i8 >, ptr %B
@@ -1161,12 +1147,10 @@ define <4 x i32> @sabal2_4s(ptr %A, ptr %B, ptr %C) nounwind {
1161
1147
;
1162
1148
; CHECK-GI-LABEL: sabal2_4s:
1163
1149
; CHECK-GI: // %bb.0:
1164
- ; CHECK-GI-NEXT: ldr q0, [x0]
1165
- ; CHECK-GI-NEXT: ldr q1, [x1]
1166
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1167
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1150
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1151
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1168
1152
; CHECK-GI-NEXT: ldr q0, [x2]
1169
- ; CHECK-GI-NEXT: sabal .4s v0, v2, v1
1153
+ ; CHECK-GI-NEXT: sabal2 .4s v0, v1, v2
1170
1154
; CHECK-GI-NEXT: ret
1171
1155
%load1 = load <8 x i16 >, ptr %A
1172
1156
%load2 = load <8 x i16 >, ptr %B
@@ -1190,12 +1174,10 @@ define <2 x i64> @sabal2_2d(ptr %A, ptr %B, ptr %C) nounwind {
1190
1174
;
1191
1175
; CHECK-GI-LABEL: sabal2_2d:
1192
1176
; CHECK-GI: // %bb.0:
1193
- ; CHECK-GI-NEXT: ldr q0, [x0]
1194
- ; CHECK-GI-NEXT: ldr q1, [x1]
1195
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1196
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1177
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1178
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1197
1179
; CHECK-GI-NEXT: ldr q0, [x2]
1198
- ; CHECK-GI-NEXT: sabal .2d v0, v2, v1
1180
+ ; CHECK-GI-NEXT: sabal2 .2d v0, v1, v2
1199
1181
; CHECK-GI-NEXT: ret
1200
1182
%load1 = load <4 x i32 >, ptr %A
1201
1183
%load2 = load <4 x i32 >, ptr %B
@@ -1270,12 +1252,10 @@ define <8 x i16> @uabal2_8h(ptr %A, ptr %B, ptr %C) nounwind {
1270
1252
;
1271
1253
; CHECK-GI-LABEL: uabal2_8h:
1272
1254
; CHECK-GI: // %bb.0:
1273
- ; CHECK-GI-NEXT: ldr q0, [x0]
1274
- ; CHECK-GI-NEXT: ldr q1, [x1]
1275
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1276
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1255
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1256
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1277
1257
; CHECK-GI-NEXT: ldr q0, [x2]
1278
- ; CHECK-GI-NEXT: uabal .8h v0, v2, v1
1258
+ ; CHECK-GI-NEXT: uabal2 .8h v0, v1, v2
1279
1259
; CHECK-GI-NEXT: ret
1280
1260
%load1 = load <16 x i8 >, ptr %A
1281
1261
%load2 = load <16 x i8 >, ptr %B
@@ -1299,12 +1279,10 @@ define <4 x i32> @uabal2_4s(ptr %A, ptr %B, ptr %C) nounwind {
1299
1279
;
1300
1280
; CHECK-GI-LABEL: uabal2_4s:
1301
1281
; CHECK-GI: // %bb.0:
1302
- ; CHECK-GI-NEXT: ldr q0, [x0]
1303
- ; CHECK-GI-NEXT: ldr q1, [x1]
1304
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1305
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1282
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1283
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1306
1284
; CHECK-GI-NEXT: ldr q0, [x2]
1307
- ; CHECK-GI-NEXT: uabal .4s v0, v2, v1
1285
+ ; CHECK-GI-NEXT: uabal2 .4s v0, v1, v2
1308
1286
; CHECK-GI-NEXT: ret
1309
1287
%load1 = load <8 x i16 >, ptr %A
1310
1288
%load2 = load <8 x i16 >, ptr %B
@@ -1328,12 +1306,10 @@ define <2 x i64> @uabal2_2d(ptr %A, ptr %B, ptr %C) nounwind {
1328
1306
;
1329
1307
; CHECK-GI-LABEL: uabal2_2d:
1330
1308
; CHECK-GI: // %bb.0:
1331
- ; CHECK-GI-NEXT: ldr q0, [x0]
1332
- ; CHECK-GI-NEXT: ldr q1, [x1]
1333
- ; CHECK-GI-NEXT: ext.16b v2, v0, v0, #8
1334
- ; CHECK-GI-NEXT: ext.16b v1, v1, v0, #8
1309
+ ; CHECK-GI-NEXT: ldr q1, [x0]
1310
+ ; CHECK-GI-NEXT: ldr q2, [x1]
1335
1311
; CHECK-GI-NEXT: ldr q0, [x2]
1336
- ; CHECK-GI-NEXT: uabal .2d v0, v2, v1
1312
+ ; CHECK-GI-NEXT: uabal2 .2d v0, v1, v2
1337
1313
; CHECK-GI-NEXT: ret
1338
1314
%load1 = load <4 x i32 >, ptr %A
1339
1315
%load2 = load <4 x i32 >, ptr %B
@@ -1607,7 +1583,7 @@ define <2 x i64> @uabdl2_from_extract_dup(<4 x i32> %lhs, i32 %rhs) {
1607
1583
; CHECK-GI-LABEL: uabdl2_from_extract_dup:
1608
1584
; CHECK-GI: // %bb.0:
1609
1585
; CHECK-GI-NEXT: dup.2s v1, w0
1610
- ; CHECK-GI-NEXT: ext.16b v0 , v0, v0, #8
1586
+ ; CHECK-GI-NEXT: mov d0 , v0[1]
1611
1587
; CHECK-GI-NEXT: uabdl.2d v0, v0, v1
1612
1588
; CHECK-GI-NEXT: ret
1613
1589
%rhsvec.tmp = insertelement <2 x i32 > undef , i32 %rhs , i32 0
@@ -1642,7 +1618,7 @@ define <2 x i64> @sabdl2_from_extract_dup(<4 x i32> %lhs, i32 %rhs) {
1642
1618
; CHECK-GI-LABEL: sabdl2_from_extract_dup:
1643
1619
; CHECK-GI: // %bb.0:
1644
1620
; CHECK-GI-NEXT: dup.2s v1, w0
1645
- ; CHECK-GI-NEXT: ext.16b v0 , v0, v0, #8
1621
+ ; CHECK-GI-NEXT: mov d0 , v0[1]
1646
1622
; CHECK-GI-NEXT: sabdl.2d v0, v0, v1
1647
1623
; CHECK-GI-NEXT: ret
1648
1624
%rhsvec.tmp = insertelement <2 x i32 > undef , i32 %rhs , i32 0
0 commit comments