Skip to content

Commit 2f792f6

Browse files
authored
[AArch64][GlobalISel] Add some post-legalization cast combines. (#112509)
This helps clear up some of the legalization artefacts. Not all of the cast_combines are added (notably select combines) as they currently have questionable benefit in the test updates.
1 parent 7eaf92b commit 2f792f6

File tree

13 files changed

+88
-218
lines changed

13 files changed

+88
-218
lines changed

llvm/include/llvm/Target/GlobalISel/Combine.td

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,20 +1791,24 @@ class integer_of_opcode<Instruction castOpcode> : GICombineRule <
17911791

17921792
def integer_of_truncate : integer_of_opcode<G_TRUNC>;
17931793

1794-
def cast_combines: GICombineGroup<[
1794+
def cast_of_cast_combines: GICombineGroup<[
17951795
truncate_of_zext,
17961796
truncate_of_sext,
17971797
truncate_of_anyext,
1798-
select_of_zext,
1799-
select_of_anyext,
1800-
select_of_truncate,
18011798
zext_of_zext,
18021799
zext_of_anyext,
18031800
sext_of_sext,
18041801
sext_of_anyext,
18051802
anyext_of_anyext,
18061803
anyext_of_zext,
1807-
anyext_of_sext,
1804+
anyext_of_sext
1805+
]>;
1806+
1807+
def cast_combines: GICombineGroup<[
1808+
cast_of_cast_combines,
1809+
select_of_zext,
1810+
select_of_anyext,
1811+
select_of_truncate,
18081812
buildvector_of_truncate,
18091813
narrow_binop_add,
18101814
narrow_binop_sub,

llvm/lib/Target/AArch64/AArch64Combine.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,9 @@ def AArch64PostLegalizerLowering
314314
// Post-legalization combines which are primarily optimizations.
315315
def AArch64PostLegalizerCombiner
316316
: GICombiner<"AArch64PostLegalizerCombinerImpl",
317-
[copy_prop, combines_for_extload,
318-
combine_indexed_load_store,
319-
sext_trunc_sextload, mutate_anyext_to_zext,
317+
[copy_prop, cast_of_cast_combines, buildvector_of_truncate,
318+
integer_of_truncate, mutate_anyext_to_zext,
319+
combines_for_extload, combine_indexed_load_store, sext_trunc_sextload,
320320
hoist_logic_op_with_same_opcode_hands,
321321
redundant_and, xor_of_and_with_same_reg,
322322
extractvecelt_pairwise_add, redundant_or,

llvm/test/CodeGen/AArch64/GlobalISel/combine-cast.mir

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -135,20 +135,13 @@ name: test_combine_trunc_build_vector
135135
legalized: true
136136
body: |
137137
bb.1:
138-
; CHECK-PRE-LABEL: name: test_combine_trunc_build_vector
139-
; CHECK-PRE: %arg1:_(s64) = COPY $x0
140-
; CHECK-PRE-NEXT: %arg2:_(s64) = COPY $x0
141-
; CHECK-PRE-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC %arg1(s64)
142-
; CHECK-PRE-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC %arg2(s64)
143-
; CHECK-PRE-NEXT: %small:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)
144-
; CHECK-PRE-NEXT: $x0 = COPY %small(<2 x s32>)
145-
;
146-
; CHECK-POST-LABEL: name: test_combine_trunc_build_vector
147-
; CHECK-POST: %arg1:_(s64) = COPY $x0
148-
; CHECK-POST-NEXT: %arg2:_(s64) = COPY $x0
149-
; CHECK-POST-NEXT: %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)
150-
; CHECK-POST-NEXT: %small:_(<2 x s32>) = G_TRUNC %bv(<2 x s64>)
151-
; CHECK-POST-NEXT: $x0 = COPY %small(<2 x s32>)
138+
; CHECK-LABEL: name: test_combine_trunc_build_vector
139+
; CHECK: %arg1:_(s64) = COPY $x0
140+
; CHECK-NEXT: %arg2:_(s64) = COPY $x0
141+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC %arg1(s64)
142+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC %arg2(s64)
143+
; CHECK-NEXT: %small:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)
144+
; CHECK-NEXT: $x0 = COPY %small(<2 x s32>)
152145
%arg1:_(s64) = COPY $x0
153146
%arg2:_(s64) = COPY $x0
154147
%bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)

llvm/test/CodeGen/AArch64/GlobalISel/combine-trunc.mir

Lines changed: 29 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,12 @@ legalized: true
3232
body: |
3333
bb.1:
3434
liveins: $h0
35-
; CHECK-PRE-LABEL: name: test_combine_trunc_anyext_s32_s16
36-
; CHECK-PRE: liveins: $h0
37-
; CHECK-PRE-NEXT: {{ $}}
38-
; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
39-
; CHECK-PRE-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s16)
40-
; CHECK-PRE-NEXT: $w0 = COPY [[ANYEXT]](s32)
41-
;
42-
; CHECK-POST-LABEL: name: test_combine_trunc_anyext_s32_s16
43-
; CHECK-POST: liveins: $h0
44-
; CHECK-POST-NEXT: {{ $}}
45-
; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
46-
; CHECK-POST-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s16)
47-
; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ANYEXT]](s64)
48-
; CHECK-POST-NEXT: $w0 = COPY [[TRUNC]](s32)
35+
; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s16
36+
; CHECK: liveins: $h0
37+
; CHECK-NEXT: {{ $}}
38+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
39+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s16)
40+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
4941
%0:_(s16) = COPY $h0
5042
%1:_(s64) = G_ANYEXT %0(s16)
5143
%2:_(s32) = G_TRUNC %1(s64)
@@ -82,20 +74,12 @@ legalized: true
8274
body: |
8375
bb.1:
8476
liveins: $h0
85-
; CHECK-PRE-LABEL: name: test_combine_trunc_sext_s32_s16
86-
; CHECK-PRE: liveins: $h0
87-
; CHECK-PRE-NEXT: {{ $}}
88-
; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
89-
; CHECK-PRE-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s16)
90-
; CHECK-PRE-NEXT: $w0 = COPY [[SEXT]](s32)
91-
;
92-
; CHECK-POST-LABEL: name: test_combine_trunc_sext_s32_s16
93-
; CHECK-POST: liveins: $h0
94-
; CHECK-POST-NEXT: {{ $}}
95-
; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
96-
; CHECK-POST-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s16)
97-
; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SEXT]](s64)
98-
; CHECK-POST-NEXT: $w0 = COPY [[TRUNC]](s32)
77+
; CHECK-LABEL: name: test_combine_trunc_sext_s32_s16
78+
; CHECK: liveins: $h0
79+
; CHECK-NEXT: {{ $}}
80+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
81+
; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s16)
82+
; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
9983
%0:_(s16) = COPY $h0
10084
%1:_(s64) = G_SEXT %0(s16)
10185
%2:_(s32) = G_TRUNC %1(s64)
@@ -107,20 +91,12 @@ legalized: true
10791
body: |
10892
bb.1:
10993
liveins: $h0
110-
; CHECK-PRE-LABEL: name: test_combine_trunc_zext_s32_s16
111-
; CHECK-PRE: liveins: $h0
112-
; CHECK-PRE-NEXT: {{ $}}
113-
; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
114-
; CHECK-PRE-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s16)
115-
; CHECK-PRE-NEXT: $w0 = COPY [[ZEXT]](s32)
116-
;
117-
; CHECK-POST-LABEL: name: test_combine_trunc_zext_s32_s16
118-
; CHECK-POST: liveins: $h0
119-
; CHECK-POST-NEXT: {{ $}}
120-
; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
121-
; CHECK-POST-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s16)
122-
; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ZEXT]](s64)
123-
; CHECK-POST-NEXT: $w0 = COPY [[TRUNC]](s32)
94+
; CHECK-LABEL: name: test_combine_trunc_zext_s32_s16
95+
; CHECK: liveins: $h0
96+
; CHECK-NEXT: {{ $}}
97+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0
98+
; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s16)
99+
; CHECK-NEXT: $w0 = COPY [[ZEXT]](s32)
124100
%0:_(s16) = COPY $h0
125101
%1:_(s64) = G_ZEXT %0(s16)
126102
%2:_(s32) = G_TRUNC %1(s64)
@@ -132,19 +108,11 @@ legalized: true
132108
body: |
133109
bb.1:
134110
liveins: $w0
135-
; CHECK-PRE-LABEL: name: test_combine_trunc_anyext_s32_s32
136-
; CHECK-PRE: liveins: $w0
137-
; CHECK-PRE-NEXT: {{ $}}
138-
; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
139-
; CHECK-PRE-NEXT: $w0 = COPY [[COPY]](s32)
140-
;
141-
; CHECK-POST-LABEL: name: test_combine_trunc_anyext_s32_s32
142-
; CHECK-POST: liveins: $w0
143-
; CHECK-POST-NEXT: {{ $}}
144-
; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
145-
; CHECK-POST-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)
146-
; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ANYEXT]](s64)
147-
; CHECK-POST-NEXT: $w0 = COPY [[TRUNC]](s32)
111+
; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s32
112+
; CHECK: liveins: $w0
113+
; CHECK-NEXT: {{ $}}
114+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
115+
; CHECK-NEXT: $w0 = COPY [[COPY]](s32)
148116
%0:_(s32) = COPY $w0
149117
%1:_(s64) = G_ANYEXT %0(s32)
150118
%2:_(s32) = G_TRUNC %1(s64)
@@ -156,20 +124,12 @@ legalized: true
156124
body: |
157125
bb.1:
158126
liveins: $x0
159-
; CHECK-PRE-LABEL: name: test_combine_trunc_anyext_s32_s64
160-
; CHECK-PRE: liveins: $x0
161-
; CHECK-PRE-NEXT: {{ $}}
162-
; CHECK-PRE-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
163-
; CHECK-PRE-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
164-
; CHECK-PRE-NEXT: $w0 = COPY [[TRUNC]](s32)
165-
;
166-
; CHECK-POST-LABEL: name: test_combine_trunc_anyext_s32_s64
167-
; CHECK-POST: liveins: $x0
168-
; CHECK-POST-NEXT: {{ $}}
169-
; CHECK-POST-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
170-
; CHECK-POST-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[COPY]](s64)
171-
; CHECK-POST-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ANYEXT]](s128)
172-
; CHECK-POST-NEXT: $w0 = COPY [[TRUNC]](s32)
127+
; CHECK-LABEL: name: test_combine_trunc_anyext_s32_s64
128+
; CHECK: liveins: $x0
129+
; CHECK-NEXT: {{ $}}
130+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
131+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
132+
; CHECK-NEXT: $w0 = COPY [[TRUNC]](s32)
173133
%0:_(s64) = COPY $x0
174134
%1:_(s128) = G_ANYEXT %0(s64)
175135
%2:_(s32) = G_TRUNC %1(s128)

llvm/test/CodeGen/AArch64/add.ll

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,7 @@ define void @v4i8(ptr %p1, ptr %p2) {
171171
; CHECK-GI-NEXT: ushll v0.8h, v3.8b, #0
172172
; CHECK-GI-NEXT: ushll v1.8h, v5.8b, #0
173173
; CHECK-GI-NEXT: add v0.4h, v0.4h, v1.4h
174-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
175-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
176-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
177-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
178-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
174+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
179175
; CHECK-GI-NEXT: fmov w8, s0
180176
; CHECK-GI-NEXT: str w8, [x0]
181177
; CHECK-GI-NEXT: ret

llvm/test/CodeGen/AArch64/and-mask-removal.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,10 +530,10 @@ define i64 @test_2_selects(i8 zeroext %a) {
530530
; CHECK-LABEL: test_2_selects:
531531
; CHECK: ; %bb.0:
532532
; CHECK-NEXT: add w9, w0, #24
533-
; CHECK-NEXT: mov w8, #131
533+
; CHECK-NEXT: mov w8, #131 ; =0x83
534534
; CHECK-NEXT: and w9, w9, #0xff
535535
; CHECK-NEXT: cmp w9, #81
536-
; CHECK-NEXT: mov w9, #57
536+
; CHECK-NEXT: mov w9, #57 ; =0x39
537537
; CHECK-NEXT: csel x8, x8, xzr, lo
538538
; CHECK-NEXT: csel x9, xzr, x9, eq
539539
; CHECK-NEXT: add x0, x8, x9

llvm/test/CodeGen/AArch64/andorxor.ll

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -463,11 +463,7 @@ define void @and_v4i8(ptr %p1, ptr %p2) {
463463
; CHECK-GI-NEXT: ushll v0.8h, v3.8b, #0
464464
; CHECK-GI-NEXT: ushll v1.8h, v5.8b, #0
465465
; CHECK-GI-NEXT: and v0.8b, v0.8b, v1.8b
466-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
467-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
468-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
469-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
470-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
466+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
471467
; CHECK-GI-NEXT: fmov w8, s0
472468
; CHECK-GI-NEXT: str w8, [x0]
473469
; CHECK-GI-NEXT: ret
@@ -514,11 +510,7 @@ define void @or_v4i8(ptr %p1, ptr %p2) {
514510
; CHECK-GI-NEXT: ushll v0.8h, v3.8b, #0
515511
; CHECK-GI-NEXT: ushll v1.8h, v5.8b, #0
516512
; CHECK-GI-NEXT: orr v0.8b, v0.8b, v1.8b
517-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
518-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
519-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
520-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
521-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
513+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
522514
; CHECK-GI-NEXT: fmov w8, s0
523515
; CHECK-GI-NEXT: str w8, [x0]
524516
; CHECK-GI-NEXT: ret
@@ -565,11 +557,7 @@ define void @xor_v4i8(ptr %p1, ptr %p2) {
565557
; CHECK-GI-NEXT: ushll v0.8h, v3.8b, #0
566558
; CHECK-GI-NEXT: ushll v1.8h, v5.8b, #0
567559
; CHECK-GI-NEXT: eor v0.8b, v0.8b, v1.8b
568-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
569-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
570-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
571-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
572-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
560+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
573561
; CHECK-GI-NEXT: fmov w8, s0
574562
; CHECK-GI-NEXT: str w8, [x0]
575563
; CHECK-GI-NEXT: ret

llvm/test/CodeGen/AArch64/bitcast.ll

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,7 @@ define i32 @bitcast_v4i8_i32(<4 x i8> %a, <4 x i8> %b){
6060
; CHECK-GI-LABEL: bitcast_v4i8_i32:
6161
; CHECK-GI: // %bb.0:
6262
; CHECK-GI-NEXT: add v0.4h, v0.4h, v1.4h
63-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
64-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
65-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
66-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
67-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
63+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
6864
; CHECK-GI-NEXT: fmov w0, s0
6965
; CHECK-GI-NEXT: ret
7066
%c = add <4 x i8> %a, %b
@@ -116,9 +112,7 @@ define i32 @bitcast_v2i16_i32(<2 x i16> %a, <2 x i16> %b){
116112
; CHECK-GI-LABEL: bitcast_v2i16_i32:
117113
; CHECK-GI: // %bb.0:
118114
; CHECK-GI-NEXT: add v0.2s, v0.2s, v1.2s
119-
; CHECK-GI-NEXT: mov v1.s[0], v0.s[0]
120-
; CHECK-GI-NEXT: mov v1.s[1], v0.s[1]
121-
; CHECK-GI-NEXT: xtn v0.4h, v1.4s
115+
; CHECK-GI-NEXT: uzp1 v0.4h, v0.4h, v0.4h
122116
; CHECK-GI-NEXT: fmov w0, s0
123117
; CHECK-GI-NEXT: ret
124118
%c = add <2 x i16> %a, %b
@@ -418,9 +412,7 @@ define <4 x i8> @bitcast_v2i16_v4i8(<2 x i16> %a, <2 x i16> %b){
418412
; CHECK-GI-LABEL: bitcast_v2i16_v4i8:
419413
; CHECK-GI: // %bb.0:
420414
; CHECK-GI-NEXT: add v0.2s, v0.2s, v1.2s
421-
; CHECK-GI-NEXT: mov v1.s[0], v0.s[0]
422-
; CHECK-GI-NEXT: mov v1.s[1], v0.s[1]
423-
; CHECK-GI-NEXT: xtn v0.4h, v1.4s
415+
; CHECK-GI-NEXT: uzp1 v0.4h, v0.4h, v0.4h
424416
; CHECK-GI-NEXT: mov b1, v0.b[1]
425417
; CHECK-GI-NEXT: mov v2.b[0], v0.b[0]
426418
; CHECK-GI-NEXT: mov b3, v0.b[2]
@@ -455,11 +447,7 @@ define <2 x i16> @bitcast_v4i8_v2i16(<4 x i8> %a, <4 x i8> %b){
455447
; CHECK-GI-LABEL: bitcast_v4i8_v2i16:
456448
; CHECK-GI: // %bb.0:
457449
; CHECK-GI-NEXT: add v0.4h, v0.4h, v1.4h
458-
; CHECK-GI-NEXT: mov v1.h[0], v0.h[0]
459-
; CHECK-GI-NEXT: mov v1.h[1], v0.h[1]
460-
; CHECK-GI-NEXT: mov v1.h[2], v0.h[2]
461-
; CHECK-GI-NEXT: mov v1.h[3], v0.h[3]
462-
; CHECK-GI-NEXT: xtn v0.8b, v1.8h
450+
; CHECK-GI-NEXT: uzp1 v0.8b, v0.8b, v0.8b
463451
; CHECK-GI-NEXT: mov h1, v0.h[1]
464452
; CHECK-GI-NEXT: mov v0.h[1], v1.h[0]
465453
; CHECK-GI-NEXT: ushll v0.4s, v0.4h, #0

0 commit comments

Comments
 (0)