4
4
define <16 x i8 > @test1 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
5
5
; CHECK-LABEL: test1:
6
6
; CHECK: // %bb.0: // %entry
7
- ; CHECK-NEXT: ldrb w8, [x0]
8
- ; CHECK-NEXT: fmov s0, w8
9
- ; CHECK-NEXT: mov v0.b[1], w8
10
- ; CHECK-NEXT: mov v0.b[2], w8
11
- ; CHECK-NEXT: mov v0.b[3], w8
12
- ; CHECK-NEXT: mov v0.b[4], w8
13
- ; CHECK-NEXT: mov v0.b[5], w8
14
- ; CHECK-NEXT: mov v0.b[6], w8
15
- ; CHECK-NEXT: mov v0.b[7], w8
16
- ; CHECK-NEXT: ldrb w8, [x1]
17
- ; CHECK-NEXT: mov v0.b[8], w8
18
- ; CHECK-NEXT: mov v0.b[9], w8
19
- ; CHECK-NEXT: mov v0.b[10], w8
20
- ; CHECK-NEXT: mov v0.b[11], w8
21
- ; CHECK-NEXT: mov v0.b[12], w8
22
- ; CHECK-NEXT: mov v0.b[13], w8
23
- ; CHECK-NEXT: mov v0.b[14], w8
24
- ; CHECK-NEXT: mov v0.b[15], w8
7
+ ; CHECK-NEXT: ld1r { v1.8b }, [x1]
8
+ ; CHECK-NEXT: ld1r { v0.8b }, [x0]
9
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
25
10
; CHECK-NEXT: ret
26
11
entry:
27
12
%0 = load i8 , ptr %a , align 1
@@ -75,24 +60,9 @@ entry:
75
60
define <16 x i8 > @test4 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
76
61
; CHECK-LABEL: test4:
77
62
; CHECK: // %bb.0: // %entry
78
- ; CHECK-NEXT: ldrb w8, [x1]
79
- ; CHECK-NEXT: fmov s0, w8
80
- ; CHECK-NEXT: mov v0.b[1], w8
81
- ; CHECK-NEXT: mov v0.b[2], w8
82
- ; CHECK-NEXT: mov v0.b[3], w8
83
- ; CHECK-NEXT: mov v0.b[4], w8
84
- ; CHECK-NEXT: mov v0.b[5], w8
85
- ; CHECK-NEXT: mov v0.b[6], w8
86
- ; CHECK-NEXT: mov v0.b[7], w8
87
- ; CHECK-NEXT: ldrb w8, [x0]
88
- ; CHECK-NEXT: mov v0.b[8], w8
89
- ; CHECK-NEXT: mov v0.b[9], w8
90
- ; CHECK-NEXT: mov v0.b[10], w8
91
- ; CHECK-NEXT: mov v0.b[11], w8
92
- ; CHECK-NEXT: mov v0.b[12], w8
93
- ; CHECK-NEXT: mov v0.b[13], w8
94
- ; CHECK-NEXT: mov v0.b[14], w8
95
- ; CHECK-NEXT: mov v0.b[15], w8
63
+ ; CHECK-NEXT: ld1r { v1.8b }, [x0]
64
+ ; CHECK-NEXT: ld1r { v0.8b }, [x1]
65
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
96
66
; CHECK-NEXT: ret
97
67
entry:
98
68
%0 = load i8 , ptr %a , align 1
@@ -128,17 +98,12 @@ entry:
128
98
define <8 x i8 > @test6 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
129
99
; CHECK-LABEL: test6:
130
100
; CHECK: // %bb.0: // %entry
131
- ; CHECK-NEXT: ldrb w8, [x0]
132
- ; CHECK-NEXT: fmov s0, w8
133
- ; CHECK-NEXT: mov v0.b[1], w8
134
- ; CHECK-NEXT: mov v0.b[2], w8
135
- ; CHECK-NEXT: mov v0.b[3], w8
136
- ; CHECK-NEXT: ldrb w8, [x1]
137
- ; CHECK-NEXT: mov v0.b[4], w8
138
- ; CHECK-NEXT: mov v0.b[5], w8
139
- ; CHECK-NEXT: mov v0.b[6], w8
140
- ; CHECK-NEXT: mov v0.b[7], w8
141
- ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0
101
+ ; CHECK-NEXT: ld1r { v0.8b }, [x1]
102
+ ; CHECK-NEXT: adrp x8, .LCPI5_0
103
+ ; CHECK-NEXT: ld1r { v1.8b }, [x0]
104
+ ; CHECK-NEXT: mov v1.d[1], v0.d[0]
105
+ ; CHECK-NEXT: ldr d0, [x8, :lo12:.LCPI5_0]
106
+ ; CHECK-NEXT: tbl v0.8b, { v1.16b }, v0.8b
142
107
; CHECK-NEXT: ret
143
108
entry:
144
109
%0 = load i8 , ptr %a , align 1
@@ -154,17 +119,12 @@ entry:
154
119
define <8 x i8 > @test7 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
155
120
; CHECK-LABEL: test7:
156
121
; CHECK: // %bb.0: // %entry
157
- ; CHECK-NEXT: ldrb w8, [x1]
158
- ; CHECK-NEXT: fmov s0, w8
159
- ; CHECK-NEXT: mov v0.b[1], w8
160
- ; CHECK-NEXT: mov v0.b[2], w8
161
- ; CHECK-NEXT: mov v0.b[3], w8
162
- ; CHECK-NEXT: ldrb w8, [x0]
163
- ; CHECK-NEXT: mov v0.b[4], w8
164
- ; CHECK-NEXT: mov v0.b[5], w8
165
- ; CHECK-NEXT: mov v0.b[6], w8
166
- ; CHECK-NEXT: mov v0.b[7], w8
167
- ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $q0
122
+ ; CHECK-NEXT: ld1r { v0.8b }, [x0]
123
+ ; CHECK-NEXT: adrp x8, .LCPI6_0
124
+ ; CHECK-NEXT: ld1r { v1.8b }, [x1]
125
+ ; CHECK-NEXT: mov v1.d[1], v0.d[0]
126
+ ; CHECK-NEXT: ldr d0, [x8, :lo12:.LCPI6_0]
127
+ ; CHECK-NEXT: tbl v0.8b, { v1.16b }, v0.8b
168
128
; CHECK-NEXT: ret
169
129
entry:
170
130
%0 = load i8 , ptr %a , align 1
@@ -180,16 +140,9 @@ entry:
180
140
define <8 x i16 > @test8 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
181
141
; CHECK-LABEL: test8:
182
142
; CHECK: // %bb.0: // %entry
183
- ; CHECK-NEXT: ldrh w8, [x0]
184
- ; CHECK-NEXT: fmov s0, w8
185
- ; CHECK-NEXT: mov v0.h[1], w8
186
- ; CHECK-NEXT: mov v0.h[2], w8
187
- ; CHECK-NEXT: mov v0.h[3], w8
188
- ; CHECK-NEXT: ldrh w8, [x1]
189
- ; CHECK-NEXT: mov v0.h[4], w8
190
- ; CHECK-NEXT: mov v0.h[5], w8
191
- ; CHECK-NEXT: mov v0.h[6], w8
192
- ; CHECK-NEXT: mov v0.h[7], w8
143
+ ; CHECK-NEXT: ld1r { v1.4h }, [x1]
144
+ ; CHECK-NEXT: ld1r { v0.4h }, [x0]
145
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
193
146
; CHECK-NEXT: ret
194
147
entry:
195
148
%0 = load i16 , ptr %a , align 1
@@ -205,12 +158,9 @@ entry:
205
158
define <4 x i32 > @test9 (ptr nocapture noundef readonly %a , ptr nocapture noundef readonly %b ) {
206
159
; CHECK-LABEL: test9:
207
160
; CHECK: // %bb.0: // %entry
208
- ; CHECK-NEXT: ldr w8, [x0]
209
- ; CHECK-NEXT: fmov s0, w8
210
- ; CHECK-NEXT: mov v0.s[1], w8
211
- ; CHECK-NEXT: ldr w8, [x1]
212
- ; CHECK-NEXT: mov v0.s[2], w8
213
- ; CHECK-NEXT: mov v0.s[3], w8
161
+ ; CHECK-NEXT: ld1r { v1.2s }, [x1]
162
+ ; CHECK-NEXT: ld1r { v0.2s }, [x0]
163
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
214
164
; CHECK-NEXT: ret
215
165
entry:
216
166
%0 = load i32 , ptr %a , align 1
0 commit comments