Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/gtest/aarch64/asmtest.out.h
41145 views
1
// BEGIN Generated code -- do not edit
2
// Generated by aarch64-asmtest.py
3
Label back, forth;
4
__ bind(back);
5
6
// ArithOp
7
__ add(r26, r23, r13, Assembler::LSL, 32); // add x26, x23, x13, LSL #32
8
__ sub(r12, r24, r9, Assembler::LSR, 37); // sub x12, x24, x9, LSR #37
9
__ adds(r28, r15, r8, Assembler::ASR, 39); // adds x28, x15, x8, ASR #39
10
__ subs(r7, r28, r30, Assembler::ASR, 57); // subs x7, x28, x30, ASR #57
11
__ addw(r9, r22, r27, Assembler::ASR, 15); // add w9, w22, w27, ASR #15
12
__ subw(r3, r13, r17, Assembler::ASR, 30); // sub w3, w13, w17, ASR #30
13
__ addsw(r14, r26, r8, Assembler::ASR, 17); // adds w14, w26, w8, ASR #17
14
__ subsw(r0, r22, r12, Assembler::ASR, 21); // subs w0, w22, w12, ASR #21
15
__ andr(r0, r15, r26, Assembler::LSL, 20); // and x0, x15, x26, LSL #20
16
__ orr(r26, r5, r17, Assembler::LSL, 61); // orr x26, x5, x17, LSL #61
17
__ eor(r24, r13, r2, Assembler::LSL, 32); // eor x24, x13, x2, LSL #32
18
__ ands(r28, r3, r17, Assembler::ASR, 35); // ands x28, x3, x17, ASR #35
19
__ andw(r25, r16, r29, Assembler::LSR, 18); // and w25, w16, w29, LSR #18
20
__ orrw(r13, r17, r11, Assembler::LSR, 9); // orr w13, w17, w11, LSR #9
21
__ eorw(r5, r5, r17, Assembler::LSR, 15); // eor w5, w5, w17, LSR #15
22
__ andsw(r2, r23, r27, Assembler::ASR, 26); // ands w2, w23, w27, ASR #26
23
__ bic(r27, r28, r16, Assembler::LSR, 45); // bic x27, x28, x16, LSR #45
24
__ orn(r8, r25, r26, Assembler::ASR, 37); // orn x8, x25, x26, ASR #37
25
__ eon(r29, r17, r13, Assembler::LSR, 63); // eon x29, x17, x13, LSR #63
26
__ bics(r28, r24, r2, Assembler::LSR, 31); // bics x28, x24, x2, LSR #31
27
__ bicw(r19, r26, r7, Assembler::ASR, 3); // bic w19, w26, w7, ASR #3
28
__ ornw(r6, r24, r10, Assembler::ASR, 3); // orn w6, w24, w10, ASR #3
29
__ eonw(r4, r21, r1, Assembler::LSR, 29); // eon w4, w21, w1, LSR #29
30
__ bicsw(r16, r21, r0, Assembler::LSR, 19); // bics w16, w21, w0, LSR #19
31
32
// AddSubImmOp
33
__ addw(r17, r12, 379u); // add w17, w12, #379
34
__ addsw(r30, r1, 22u); // adds w30, w1, #22
35
__ subw(r29, r5, 126u); // sub w29, w5, #126
36
__ subsw(r6, r24, 960u); // subs w6, w24, #960
37
__ add(r0, r13, 104u); // add x0, x13, #104
38
__ adds(r8, r6, 663u); // adds x8, x6, #663
39
__ sub(r10, r5, 516u); // sub x10, x5, #516
40
__ subs(r1, r3, 1012u); // subs x1, x3, #1012
41
42
// LogicalImmOp
43
__ andw(r6, r11, 4294049777ull); // and w6, w11, #0xfff1fff1
44
__ orrw(r28, r5, 4294966791ull); // orr w28, w5, #0xfffffe07
45
__ eorw(r1, r20, 134217216ull); // eor w1, w20, #0x7fffe00
46
__ andsw(r7, r17, 1048576ull); // ands w7, w17, #0x100000
47
__ andr(r14, r12, 9223372036854775808ull); // and x14, x12, #0x8000000000000000
48
__ orr(r9, r11, 562675075514368ull); // orr x9, x11, #0x1ffc000000000
49
__ eor(r17, r0, 18014398509481728ull); // eor x17, x0, #0x3fffffffffff00
50
__ ands(r1, r8, 18446744073705357315ull); // ands x1, x8, #0xffffffffffc00003
51
52
// AbsOp
53
__ b(__ pc()); // b .
54
__ b(back); // b back
55
__ b(forth); // b forth
56
__ bl(__ pc()); // bl .
57
__ bl(back); // bl back
58
__ bl(forth); // bl forth
59
60
// RegAndAbsOp
61
__ cbzw(r10, __ pc()); // cbz w10, .
62
__ cbzw(r10, back); // cbz w10, back
63
__ cbzw(r10, forth); // cbz w10, forth
64
__ cbnzw(r8, __ pc()); // cbnz w8, .
65
__ cbnzw(r8, back); // cbnz w8, back
66
__ cbnzw(r8, forth); // cbnz w8, forth
67
__ cbz(r11, __ pc()); // cbz x11, .
68
__ cbz(r11, back); // cbz x11, back
69
__ cbz(r11, forth); // cbz x11, forth
70
__ cbnz(r29, __ pc()); // cbnz x29, .
71
__ cbnz(r29, back); // cbnz x29, back
72
__ cbnz(r29, forth); // cbnz x29, forth
73
__ adr(r19, __ pc()); // adr x19, .
74
__ adr(r19, back); // adr x19, back
75
__ adr(r19, forth); // adr x19, forth
76
__ _adrp(r19, __ pc()); // adrp x19, .
77
78
// RegImmAbsOp
79
__ tbz(r22, 6, __ pc()); // tbz x22, #6, .
80
__ tbz(r22, 6, back); // tbz x22, #6, back
81
__ tbz(r22, 6, forth); // tbz x22, #6, forth
82
__ tbnz(r12, 11, __ pc()); // tbnz x12, #11, .
83
__ tbnz(r12, 11, back); // tbnz x12, #11, back
84
__ tbnz(r12, 11, forth); // tbnz x12, #11, forth
85
86
// MoveWideImmOp
87
__ movnw(r0, 6301, 0); // movn w0, #6301, lsl 0
88
__ movzw(r7, 20886, 0); // movz w7, #20886, lsl 0
89
__ movkw(r27, 18617, 0); // movk w27, #18617, lsl 0
90
__ movn(r12, 22998, 16); // movn x12, #22998, lsl 16
91
__ movz(r20, 1532, 16); // movz x20, #1532, lsl 16
92
__ movk(r8, 5167, 32); // movk x8, #5167, lsl 32
93
94
// BitfieldOp
95
__ sbfm(r15, r17, 24, 28); // sbfm x15, x17, #24, #28
96
__ bfmw(r15, r9, 14, 25); // bfm w15, w9, #14, #25
97
__ ubfmw(r27, r25, 6, 31); // ubfm w27, w25, #6, #31
98
__ sbfm(r19, r2, 23, 31); // sbfm x19, x2, #23, #31
99
__ bfm(r12, r21, 10, 6); // bfm x12, x21, #10, #6
100
__ ubfm(r22, r0, 26, 16); // ubfm x22, x0, #26, #16
101
102
// ExtractOp
103
__ extrw(r3, r3, r20, 27); // extr w3, w3, w20, #27
104
__ extr(r8, r30, r3, 54); // extr x8, x30, x3, #54
105
106
// CondBranchOp
107
__ br(Assembler::EQ, __ pc()); // b.EQ .
108
__ br(Assembler::EQ, back); // b.EQ back
109
__ br(Assembler::EQ, forth); // b.EQ forth
110
__ br(Assembler::NE, __ pc()); // b.NE .
111
__ br(Assembler::NE, back); // b.NE back
112
__ br(Assembler::NE, forth); // b.NE forth
113
__ br(Assembler::HS, __ pc()); // b.HS .
114
__ br(Assembler::HS, back); // b.HS back
115
__ br(Assembler::HS, forth); // b.HS forth
116
__ br(Assembler::CS, __ pc()); // b.CS .
117
__ br(Assembler::CS, back); // b.CS back
118
__ br(Assembler::CS, forth); // b.CS forth
119
__ br(Assembler::LO, __ pc()); // b.LO .
120
__ br(Assembler::LO, back); // b.LO back
121
__ br(Assembler::LO, forth); // b.LO forth
122
__ br(Assembler::CC, __ pc()); // b.CC .
123
__ br(Assembler::CC, back); // b.CC back
124
__ br(Assembler::CC, forth); // b.CC forth
125
__ br(Assembler::MI, __ pc()); // b.MI .
126
__ br(Assembler::MI, back); // b.MI back
127
__ br(Assembler::MI, forth); // b.MI forth
128
__ br(Assembler::PL, __ pc()); // b.PL .
129
__ br(Assembler::PL, back); // b.PL back
130
__ br(Assembler::PL, forth); // b.PL forth
131
__ br(Assembler::VS, __ pc()); // b.VS .
132
__ br(Assembler::VS, back); // b.VS back
133
__ br(Assembler::VS, forth); // b.VS forth
134
__ br(Assembler::VC, __ pc()); // b.VC .
135
__ br(Assembler::VC, back); // b.VC back
136
__ br(Assembler::VC, forth); // b.VC forth
137
__ br(Assembler::HI, __ pc()); // b.HI .
138
__ br(Assembler::HI, back); // b.HI back
139
__ br(Assembler::HI, forth); // b.HI forth
140
__ br(Assembler::LS, __ pc()); // b.LS .
141
__ br(Assembler::LS, back); // b.LS back
142
__ br(Assembler::LS, forth); // b.LS forth
143
__ br(Assembler::GE, __ pc()); // b.GE .
144
__ br(Assembler::GE, back); // b.GE back
145
__ br(Assembler::GE, forth); // b.GE forth
146
__ br(Assembler::LT, __ pc()); // b.LT .
147
__ br(Assembler::LT, back); // b.LT back
148
__ br(Assembler::LT, forth); // b.LT forth
149
__ br(Assembler::GT, __ pc()); // b.GT .
150
__ br(Assembler::GT, back); // b.GT back
151
__ br(Assembler::GT, forth); // b.GT forth
152
__ br(Assembler::LE, __ pc()); // b.LE .
153
__ br(Assembler::LE, back); // b.LE back
154
__ br(Assembler::LE, forth); // b.LE forth
155
__ br(Assembler::AL, __ pc()); // b.AL .
156
__ br(Assembler::AL, back); // b.AL back
157
__ br(Assembler::AL, forth); // b.AL forth
158
__ br(Assembler::NV, __ pc()); // b.NV .
159
__ br(Assembler::NV, back); // b.NV back
160
__ br(Assembler::NV, forth); // b.NV forth
161
162
// ImmOp
163
__ svc(12999); // svc #12999
164
__ hvc(2665); // hvc #2665
165
__ smc(9002); // smc #9002
166
__ brk(14843); // brk #14843
167
__ hlt(25964); // hlt #25964
168
169
// Op
170
__ nop(); // nop
171
__ eret(); // eret
172
__ drps(); // drps
173
__ isb(); // isb
174
175
// SystemOp
176
__ dsb(Assembler::ST); // dsb ST
177
__ dmb(Assembler::OSHST); // dmb OSHST
178
179
// OneRegOp
180
__ br(r16); // br x16
181
__ blr(r20); // blr x20
182
183
// LoadStoreExclusiveOp
184
__ stxr(r10, r27, r8); // stxr w10, x27, [x8]
185
__ stlxr(r0, r1, r21); // stlxr w0, x1, [x21]
186
__ ldxr(r17, r29); // ldxr x17, [x29]
187
__ ldaxr(r29, r28); // ldaxr x29, [x28]
188
__ stlr(r1, r23); // stlr x1, [x23]
189
__ ldar(r21, r20); // ldar x21, [x20]
190
191
// LoadStoreExclusiveOp
192
__ stxrw(r22, r27, r19); // stxr w22, w27, [x19]
193
__ stlxrw(r11, r16, r6); // stlxr w11, w16, [x6]
194
__ ldxrw(r17, r0); // ldxr w17, [x0]
195
__ ldaxrw(r4, r10); // ldaxr w4, [x10]
196
__ stlrw(r24, r22); // stlr w24, [x22]
197
__ ldarw(r10, r19); // ldar w10, [x19]
198
199
// LoadStoreExclusiveOp
200
__ stxrh(r1, r5, r30); // stxrh w1, w5, [x30]
201
__ stlxrh(r8, r12, r17); // stlxrh w8, w12, [x17]
202
__ ldxrh(r9, r14); // ldxrh w9, [x14]
203
__ ldaxrh(r7, r1); // ldaxrh w7, [x1]
204
__ stlrh(r5, r16); // stlrh w5, [x16]
205
__ ldarh(r2, r12); // ldarh w2, [x12]
206
207
// LoadStoreExclusiveOp
208
__ stxrb(r10, r12, r3); // stxrb w10, w12, [x3]
209
__ stlxrb(r28, r14, r26); // stlxrb w28, w14, [x26]
210
__ ldxrb(r30, r10); // ldxrb w30, [x10]
211
__ ldaxrb(r14, r21); // ldaxrb w14, [x21]
212
__ stlrb(r13, r9); // stlrb w13, [x9]
213
__ ldarb(r22, r27); // ldarb w22, [x27]
214
215
// LoadStoreExclusiveOp
216
__ ldxp(r28, r19, r11); // ldxp x28, x19, [x11]
217
__ ldaxp(r30, r19, r2); // ldaxp x30, x19, [x2]
218
__ stxp(r2, r23, r1, r0); // stxp w2, x23, x1, [x0]
219
__ stlxp(r12, r16, r13, r15); // stlxp w12, x16, x13, [x15]
220
221
// LoadStoreExclusiveOp
222
__ ldxpw(r17, r21, r13); // ldxp w17, w21, [x13]
223
__ ldaxpw(r11, r30, r8); // ldaxp w11, w30, [x8]
224
__ stxpw(r24, r13, r11, r1); // stxp w24, w13, w11, [x1]
225
__ stlxpw(r26, r21, r27, r13); // stlxp w26, w21, w27, [x13]
226
227
// base_plus_unscaled_offset
228
// LoadStoreOp
229
__ str(r11, Address(r20, -103)); // str x11, [x20, -103]
230
__ strw(r28, Address(r16, 62)); // str w28, [x16, 62]
231
__ strb(r27, Address(r9, -9)); // strb w27, [x9, -9]
232
__ strh(r2, Address(r25, -50)); // strh w2, [x25, -50]
233
__ ldr(r4, Address(r2, -241)); // ldr x4, [x2, -241]
234
__ ldrw(r30, Address(r20, -31)); // ldr w30, [x20, -31]
235
__ ldrb(r17, Address(r23, -23)); // ldrb w17, [x23, -23]
236
__ ldrh(r29, Address(r26, -1)); // ldrh w29, [x26, -1]
237
__ ldrsb(r1, Address(r9, 6)); // ldrsb x1, [x9, 6]
238
__ ldrsh(r11, Address(r12, 19)); // ldrsh x11, [x12, 19]
239
__ ldrshw(r11, Address(r1, -50)); // ldrsh w11, [x1, -50]
240
__ ldrsw(r19, Address(r24, 41)); // ldrsw x19, [x24, 41]
241
__ ldrd(v24, Address(r24, 95)); // ldr d24, [x24, 95]
242
__ ldrs(v15, Address(r5, -43)); // ldr s15, [x5, -43]
243
__ strd(v21, Address(r27, 1)); // str d21, [x27, 1]
244
__ strs(v23, Address(r13, -107)); // str s23, [x13, -107]
245
246
// pre
247
// LoadStoreOp
248
__ str(r10, Address(__ pre(r0, 8))); // str x10, [x0, 8]!
249
__ strw(r3, Address(__ pre(r0, 29))); // str w3, [x0, 29]!
250
__ strb(r10, Address(__ pre(r14, 9))); // strb w10, [x14, 9]!
251
__ strh(r29, Address(__ pre(r25, -3))); // strh w29, [x25, -3]!
252
__ ldr(r12, Address(__ pre(r16, -144))); // ldr x12, [x16, -144]!
253
__ ldrw(r12, Address(__ pre(r22, -6))); // ldr w12, [x22, -6]!
254
__ ldrb(r13, Address(__ pre(r11, -10))); // ldrb w13, [x11, -10]!
255
__ ldrh(r0, Address(__ pre(r21, -21))); // ldrh w0, [x21, -21]!
256
__ ldrsb(r23, Address(__ pre(r6, 4))); // ldrsb x23, [x6, 4]!
257
__ ldrsh(r3, Address(__ pre(r7, -53))); // ldrsh x3, [x7, -53]!
258
__ ldrshw(r28, Address(__ pre(r4, -7))); // ldrsh w28, [x4, -7]!
259
__ ldrsw(r24, Address(__ pre(r8, -18))); // ldrsw x24, [x8, -18]!
260
__ ldrd(v14, Address(__ pre(r11, 12))); // ldr d14, [x11, 12]!
261
__ ldrs(v19, Address(__ pre(r12, -67))); // ldr s19, [x12, -67]!
262
__ strd(v20, Address(__ pre(r0, -253))); // str d20, [x0, -253]!
263
__ strs(v8, Address(__ pre(r0, 64))); // str s8, [x0, 64]!
264
265
// post
266
// LoadStoreOp
267
__ str(r3, Address(__ post(r28, -94))); // str x3, [x28], -94
268
__ strw(r11, Address(__ post(r7, -54))); // str w11, [x7], -54
269
__ strb(r27, Address(__ post(r10, -24))); // strb w27, [x10], -24
270
__ strh(r6, Address(__ post(r7, 27))); // strh w6, [x7], 27
271
__ ldr(r13, Address(__ post(r10, -202))); // ldr x13, [x10], -202
272
__ ldrw(r15, Address(__ post(r5, -41))); // ldr w15, [x5], -41
273
__ ldrb(r2, Address(__ post(r13, 9))); // ldrb w2, [x13], 9
274
__ ldrh(r28, Address(__ post(r13, -20))); // ldrh w28, [x13], -20
275
__ ldrsb(r9, Address(__ post(r13, -31))); // ldrsb x9, [x13], -31
276
__ ldrsh(r3, Address(__ post(r24, -36))); // ldrsh x3, [x24], -36
277
__ ldrshw(r20, Address(__ post(r3, 6))); // ldrsh w20, [x3], 6
278
__ ldrsw(r7, Address(__ post(r19, -1))); // ldrsw x7, [x19], -1
279
__ ldrd(v30, Address(__ post(r8, -130))); // ldr d30, [x8], -130
280
__ ldrs(v25, Address(__ post(r15, 21))); // ldr s25, [x15], 21
281
__ strd(v14, Address(__ post(r23, 90))); // str d14, [x23], 90
282
__ strs(v8, Address(__ post(r0, -33))); // str s8, [x0], -33
283
284
// base_plus_reg
285
// LoadStoreOp
286
__ str(r10, Address(r17, r21, Address::sxtw(3))); // str x10, [x17, w21, sxtw #3]
287
__ strw(r4, Address(r13, r22, Address::sxtw(2))); // str w4, [x13, w22, sxtw #2]
288
__ strb(r13, Address(r0, r19, Address::uxtw(0))); // strb w13, [x0, w19, uxtw #0]
289
__ strh(r12, Address(r27, r6, Address::sxtw(0))); // strh w12, [x27, w6, sxtw #0]
290
__ ldr(r0, Address(r8, r16, Address::lsl(0))); // ldr x0, [x8, x16, lsl #0]
291
__ ldrw(r0, Address(r4, r26, Address::sxtx(0))); // ldr w0, [x4, x26, sxtx #0]
292
__ ldrb(r14, Address(r25, r5, Address::sxtw(0))); // ldrb w14, [x25, w5, sxtw #0]
293
__ ldrh(r9, Address(r4, r17, Address::uxtw(0))); // ldrh w9, [x4, w17, uxtw #0]
294
__ ldrsb(r27, Address(r4, r7, Address::lsl(0))); // ldrsb x27, [x4, x7, lsl #0]
295
__ ldrsh(r15, Address(r17, r30, Address::sxtw(0))); // ldrsh x15, [x17, w30, sxtw #0]
296
__ ldrshw(r16, Address(r0, r22, Address::sxtw(0))); // ldrsh w16, [x0, w22, sxtw #0]
297
__ ldrsw(r22, Address(r10, r30, Address::sxtx(2))); // ldrsw x22, [x10, x30, sxtx #2]
298
__ ldrd(v29, Address(r21, r10, Address::sxtx(3))); // ldr d29, [x21, x10, sxtx #3]
299
__ ldrs(v3, Address(r11, r19, Address::uxtw(0))); // ldr s3, [x11, w19, uxtw #0]
300
__ strd(v13, Address(r28, r29, Address::uxtw(3))); // str d13, [x28, w29, uxtw #3]
301
__ strs(v23, Address(r29, r5, Address::sxtx(2))); // str s23, [x29, x5, sxtx #2]
302
303
// base_plus_scaled_offset
304
// LoadStoreOp
305
__ str(r5, Address(r8, 12600)); // str x5, [x8, 12600]
306
__ strw(r29, Address(r24, 7880)); // str w29, [x24, 7880]
307
__ strb(r19, Address(r17, 1566)); // strb w19, [x17, 1566]
308
__ strh(r13, Address(r19, 3984)); // strh w13, [x19, 3984]
309
__ ldr(r19, Address(r23, 13632)); // ldr x19, [x23, 13632]
310
__ ldrw(r23, Address(r29, 6264)); // ldr w23, [x29, 6264]
311
__ ldrb(r22, Address(r11, 2012)); // ldrb w22, [x11, 2012]
312
__ ldrh(r3, Address(r10, 3784)); // ldrh w3, [x10, 3784]
313
__ ldrsb(r8, Address(r16, 1951)); // ldrsb x8, [x16, 1951]
314
__ ldrsh(r23, Address(r20, 3346)); // ldrsh x23, [x20, 3346]
315
__ ldrshw(r2, Address(r1, 3994)); // ldrsh w2, [x1, 3994]
316
__ ldrsw(r4, Address(r17, 7204)); // ldrsw x4, [x17, 7204]
317
__ ldrd(v20, Address(r27, 14400)); // ldr d20, [x27, 14400]
318
__ ldrs(v25, Address(r14, 8096)); // ldr s25, [x14, 8096]
319
__ strd(v26, Address(r10, 15024)); // str d26, [x10, 15024]
320
__ strs(v9, Address(r3, 6936)); // str s9, [x3, 6936]
321
322
// pcrel
323
// LoadStoreOp
324
__ ldr(r27, forth); // ldr x27, forth
325
__ ldrw(r11, __ pc()); // ldr w11, .
326
327
// LoadStoreOp
328
__ prfm(Address(r3, -187)); // prfm PLDL1KEEP, [x3, -187]
329
330
// LoadStoreOp
331
__ prfm(__ pc()); // prfm PLDL1KEEP, .
332
333
// LoadStoreOp
334
__ prfm(Address(r29, r14, Address::lsl(0))); // prfm PLDL1KEEP, [x29, x14, lsl #0]
335
336
// LoadStoreOp
337
__ prfm(Address(r4, 13312)); // prfm PLDL1KEEP, [x4, 13312]
338
339
// AddSubCarryOp
340
__ adcw(r21, r1, r7); // adc w21, w1, w7
341
__ adcsw(r8, r5, r7); // adcs w8, w5, w7
342
__ sbcw(r7, r27, r14); // sbc w7, w27, w14
343
__ sbcsw(r27, r4, r17); // sbcs w27, w4, w17
344
__ adc(r0, r28, r0); // adc x0, x28, x0
345
__ adcs(r12, r24, r30); // adcs x12, x24, x30
346
__ sbc(r0, r25, r15); // sbc x0, x25, x15
347
__ sbcs(r1, r24, r3); // sbcs x1, x24, x3
348
349
// AddSubExtendedOp
350
__ addw(r17, r24, r20, ext::uxtb, 2); // add w17, w24, w20, uxtb #2
351
__ addsw(r13, r28, r10, ext::uxth, 1); // adds w13, w28, w10, uxth #1
352
__ sub(r15, r16, r2, ext::sxth, 2); // sub x15, x16, x2, sxth #2
353
__ subsw(r29, r13, r13, ext::uxth, 2); // subs w29, w13, w13, uxth #2
354
__ add(r12, r20, r12, ext::sxtw, 3); // add x12, x20, x12, sxtw #3
355
__ adds(r30, r27, r11, ext::sxtb, 1); // adds x30, x27, x11, sxtb #1
356
__ sub(r14, r7, r1, ext::sxtw, 2); // sub x14, x7, x1, sxtw #2
357
__ subs(r29, r3, r27, ext::sxth, 1); // subs x29, x3, x27, sxth #1
358
359
// ConditionalCompareOp
360
__ ccmnw(r0, r13, 14u, Assembler::MI); // ccmn w0, w13, #14, MI
361
__ ccmpw(r22, r17, 6u, Assembler::CC); // ccmp w22, w17, #6, CC
362
__ ccmn(r17, r30, 14u, Assembler::VS); // ccmn x17, x30, #14, VS
363
__ ccmp(r10, r19, 12u, Assembler::HI); // ccmp x10, x19, #12, HI
364
365
// ConditionalCompareImmedOp
366
__ ccmnw(r6, 18, 2, Assembler::LE); // ccmn w6, #18, #2, LE
367
__ ccmpw(r9, 13, 4, Assembler::HI); // ccmp w9, #13, #4, HI
368
__ ccmn(r21, 11, 11, Assembler::LO); // ccmn x21, #11, #11, LO
369
__ ccmp(r4, 13, 2, Assembler::VC); // ccmp x4, #13, #2, VC
370
371
// ConditionalSelectOp
372
__ cselw(r12, r2, r22, Assembler::HI); // csel w12, w2, w22, HI
373
__ csincw(r24, r16, r17, Assembler::HS); // csinc w24, w16, w17, HS
374
__ csinvw(r6, r7, r16, Assembler::LT); // csinv w6, w7, w16, LT
375
__ csnegw(r11, r27, r22, Assembler::LS); // csneg w11, w27, w22, LS
376
__ csel(r10, r3, r29, Assembler::LT); // csel x10, x3, x29, LT
377
__ csinc(r12, r26, r27, Assembler::CC); // csinc x12, x26, x27, CC
378
__ csinv(r15, r10, r21, Assembler::GT); // csinv x15, x10, x21, GT
379
__ csneg(r30, r23, r9, Assembler::GT); // csneg x30, x23, x9, GT
380
381
// TwoRegOp
382
__ rbitw(r30, r10); // rbit w30, w10
383
__ rev16w(r29, r15); // rev16 w29, w15
384
__ revw(r29, r30); // rev w29, w30
385
__ clzw(r25, r21); // clz w25, w21
386
__ clsw(r4, r0); // cls w4, w0
387
__ rbit(r17, r21); // rbit x17, x21
388
__ rev16(r29, r16); // rev16 x29, x16
389
__ rev32(r21, r20); // rev32 x21, x20
390
__ rev(r6, r19); // rev x6, x19
391
__ clz(r30, r3); // clz x30, x3
392
__ cls(r21, r19); // cls x21, x19
393
394
// ThreeRegOp
395
__ udivw(r11, r24, r0); // udiv w11, w24, w0
396
__ sdivw(r27, r25, r14); // sdiv w27, w25, w14
397
__ lslvw(r3, r14, r17); // lslv w3, w14, w17
398
__ lsrvw(r7, r15, r24); // lsrv w7, w15, w24
399
__ asrvw(r28, r17, r25); // asrv w28, w17, w25
400
__ rorvw(r2, r26, r28); // rorv w2, w26, w28
401
__ udiv(r5, r25, r26); // udiv x5, x25, x26
402
__ sdiv(r27, r16, r17); // sdiv x27, x16, x17
403
__ lslv(r6, r21, r12); // lslv x6, x21, x12
404
__ lsrv(r0, r4, r12); // lsrv x0, x4, x12
405
__ asrv(r27, r17, r28); // asrv x27, x17, x28
406
__ rorv(r28, r2, r17); // rorv x28, x2, x17
407
__ umulh(r10, r15, r14); // umulh x10, x15, x14
408
__ smulh(r14, r3, r25); // smulh x14, x3, x25
409
410
// FourRegMulOp
411
__ maddw(r15, r19, r14, r5); // madd w15, w19, w14, w5
412
__ msubw(r16, r4, r26, r25); // msub w16, w4, w26, w25
413
__ madd(r4, r2, r2, r12); // madd x4, x2, x2, x12
414
__ msub(r29, r17, r8, r7); // msub x29, x17, x8, x7
415
__ smaddl(r3, r4, r25, r4); // smaddl x3, w4, w25, x4
416
__ smsubl(r26, r25, r4, r17); // smsubl x26, w25, w4, x17
417
__ umaddl(r0, r26, r17, r23); // umaddl x0, w26, w17, x23
418
__ umsubl(r15, r21, r28, r17); // umsubl x15, w21, w28, x17
419
420
// ThreeRegFloatOp
421
__ fabds(v27, v10, v3); // fabd s27, s10, s3
422
__ fmuls(v0, v7, v25); // fmul s0, s7, s25
423
__ fdivs(v9, v6, v15); // fdiv s9, s6, s15
424
__ fadds(v29, v15, v10); // fadd s29, s15, s10
425
__ fsubs(v2, v17, v7); // fsub s2, s17, s7
426
__ fabdd(v11, v11, v23); // fabd d11, d11, d23
427
__ fmuld(v7, v29, v23); // fmul d7, d29, d23
428
__ fdivd(v14, v27, v11); // fdiv d14, d27, d11
429
__ faddd(v11, v4, v24); // fadd d11, d4, d24
430
__ fsubd(v12, v15, v14); // fsub d12, d15, d14
431
432
// FourRegFloatOp
433
__ fmadds(v20, v11, v28, v13); // fmadd s20, s11, s28, s13
434
__ fmsubs(v11, v12, v23, v30); // fmsub s11, s12, s23, s30
435
__ fnmadds(v26, v14, v9, v13); // fnmadd s26, s14, s9, s13
436
__ fnmadds(v10, v7, v5, v29); // fnmadd s10, s7, s5, s29
437
__ fmaddd(v15, v3, v11, v12); // fmadd d15, d3, d11, d12
438
__ fmsubd(v15, v30, v30, v17); // fmsub d15, d30, d30, d17
439
__ fnmaddd(v19, v20, v15, v15); // fnmadd d19, d20, d15, d15
440
__ fnmaddd(v9, v21, v2, v9); // fnmadd d9, d21, d2, d9
441
442
// TwoRegFloatOp
443
__ fmovs(v27, v7); // fmov s27, s7
444
__ fabss(v29, v30); // fabs s29, s30
445
__ fnegs(v17, v1); // fneg s17, s1
446
__ fsqrts(v2, v6); // fsqrt s2, s6
447
__ fcvts(v10, v3); // fcvt d10, s3
448
__ fmovd(v24, v11); // fmov d24, d11
449
__ fabsd(v7, v1); // fabs d7, d1
450
__ fnegd(v11, v0); // fneg d11, d0
451
__ fsqrtd(v3, v17); // fsqrt d3, d17
452
__ fcvtd(v28, v6); // fcvt s28, d6
453
454
// FloatConvertOp
455
__ fcvtzsw(r22, v6); // fcvtzs w22, s6
456
__ fcvtzs(r0, v27); // fcvtzs x0, s27
457
__ fcvtzdw(r26, v2); // fcvtzs w26, d2
458
__ fcvtzd(r5, v7); // fcvtzs x5, d7
459
__ scvtfws(v28, r11); // scvtf s28, w11
460
__ scvtfs(v25, r13); // scvtf s25, x13
461
__ scvtfwd(v11, r23); // scvtf d11, w23
462
__ scvtfd(v19, r8); // scvtf d19, x8
463
__ fmovs(r17, v21); // fmov w17, s21
464
__ fmovd(r25, v20); // fmov x25, d20
465
__ fmovs(v19, r17); // fmov s19, w17
466
__ fmovd(v2, r29); // fmov d2, x29
467
468
// TwoRegFloatOp
469
__ fcmps(v22, v8); // fcmp s22, s8
470
__ fcmpd(v21, v19); // fcmp d21, d19
471
__ fcmps(v20, 0.0); // fcmp s20, #0.0
472
__ fcmpd(v11, 0.0); // fcmp d11, #0.0
473
474
// LoadStorePairOp
475
__ stpw(r20, r6, Address(r15, -32)); // stp w20, w6, [x15, #-32]
476
__ ldpw(r27, r14, Address(r3, -208)); // ldp w27, w14, [x3, #-208]
477
__ ldpsw(r16, r10, Address(r11, -80)); // ldpsw x16, x10, [x11, #-80]
478
__ stp(r7, r7, Address(r14, 64)); // stp x7, x7, [x14, #64]
479
__ ldp(r12, r23, Address(r0, 112)); // ldp x12, x23, [x0, #112]
480
481
// LoadStorePairOp
482
__ stpw(r13, r7, Address(__ pre(r6, -80))); // stp w13, w7, [x6, #-80]!
483
__ ldpw(r30, r15, Address(__ pre(r2, -144))); // ldp w30, w15, [x2, #-144]!
484
__ ldpsw(r4, r1, Address(__ pre(r27, -144))); // ldpsw x4, x1, [x27, #-144]!
485
__ stp(r23, r14, Address(__ pre(r11, 64))); // stp x23, x14, [x11, #64]!
486
__ ldp(r29, r27, Address(__ pre(r21, -192))); // ldp x29, x27, [x21, #-192]!
487
488
// LoadStorePairOp
489
__ stpw(r22, r5, Address(__ post(r21, -48))); // stp w22, w5, [x21], #-48
490
__ ldpw(r27, r17, Address(__ post(r6, -32))); // ldp w27, w17, [x6], #-32
491
__ ldpsw(r16, r5, Address(__ post(r1, -80))); // ldpsw x16, x5, [x1], #-80
492
__ stp(r13, r20, Address(__ post(r22, -208))); // stp x13, x20, [x22], #-208
493
__ ldp(r30, r27, Address(__ post(r10, 80))); // ldp x30, x27, [x10], #80
494
495
// LoadStorePairOp
496
__ stnpw(r5, r17, Address(r11, 16)); // stnp w5, w17, [x11, #16]
497
__ ldnpw(r14, r4, Address(r26, -96)); // ldnp w14, w4, [x26, #-96]
498
__ stnp(r23, r29, Address(r12, 32)); // stnp x23, x29, [x12, #32]
499
__ ldnp(r0, r6, Address(r21, -80)); // ldnp x0, x6, [x21, #-80]
500
501
// LdStNEONOp
502
__ ld1(v15, __ T8B, Address(r26)); // ld1 {v15.8B}, [x26]
503
__ ld1(v23, v24, __ T16B, Address(__ post(r11, 32))); // ld1 {v23.16B, v24.16B}, [x11], 32
504
__ ld1(v8, v9, v10, __ T1D, Address(__ post(r23, r7))); // ld1 {v8.1D, v9.1D, v10.1D}, [x23], x7
505
__ ld1(v19, v20, v21, v22, __ T8H, Address(__ post(r25, 64))); // ld1 {v19.8H, v20.8H, v21.8H, v22.8H}, [x25], 64
506
__ ld1r(v29, __ T8B, Address(r17)); // ld1r {v29.8B}, [x17]
507
__ ld1r(v24, __ T4S, Address(__ post(r23, 4))); // ld1r {v24.4S}, [x23], 4
508
__ ld1r(v10, __ T1D, Address(__ post(r5, r25))); // ld1r {v10.1D}, [x5], x25
509
__ ld2(v17, v18, __ T2D, Address(r10)); // ld2 {v17.2D, v18.2D}, [x10]
510
__ ld2(v12, v13, __ T4H, Address(__ post(r15, 16))); // ld2 {v12.4H, v13.4H}, [x15], 16
511
__ ld2r(v25, v26, __ T16B, Address(r17)); // ld2r {v25.16B, v26.16B}, [x17]
512
__ ld2r(v1, v2, __ T2S, Address(__ post(r30, 8))); // ld2r {v1.2S, v2.2S}, [x30], 8
513
__ ld2r(v16, v17, __ T2D, Address(__ post(r17, r9))); // ld2r {v16.2D, v17.2D}, [x17], x9
514
__ ld3(v25, v26, v27, __ T4S, Address(__ post(r12, r2))); // ld3 {v25.4S, v26.4S, v27.4S}, [x12], x2
515
__ ld3(v26, v27, v28, __ T2S, Address(r19)); // ld3 {v26.2S, v27.2S, v28.2S}, [x19]
516
__ ld3r(v15, v16, v17, __ T8H, Address(r21)); // ld3r {v15.8H, v16.8H, v17.8H}, [x21]
517
__ ld3r(v25, v26, v27, __ T4S, Address(__ post(r13, 12))); // ld3r {v25.4S, v26.4S, v27.4S}, [x13], 12
518
__ ld3r(v14, v15, v16, __ T1D, Address(__ post(r28, r29))); // ld3r {v14.1D, v15.1D, v16.1D}, [x28], x29
519
__ ld4(v17, v18, v19, v20, __ T8H, Address(__ post(r29, 64))); // ld4 {v17.8H, v18.8H, v19.8H, v20.8H}, [x29], 64
520
__ ld4(v27, v28, v29, v30, __ T8B, Address(__ post(r7, r0))); // ld4 {v27.8B, v28.8B, v29.8B, v30.8B}, [x7], x0
521
__ ld4r(v24, v25, v26, v27, __ T8B, Address(r17)); // ld4r {v24.8B, v25.8B, v26.8B, v27.8B}, [x17]
522
__ ld4r(v0, v1, v2, v3, __ T4H, Address(__ post(r26, 8))); // ld4r {v0.4H, v1.4H, v2.4H, v3.4H}, [x26], 8
523
__ ld4r(v12, v13, v14, v15, __ T2S, Address(__ post(r25, r2))); // ld4r {v12.2S, v13.2S, v14.2S, v15.2S}, [x25], x2
524
525
// NEONReduceInstruction
526
__ addv(v22, __ T8B, v23); // addv b22, v23.8B
527
__ addv(v27, __ T16B, v28); // addv b27, v28.16B
528
__ addv(v4, __ T4H, v5); // addv h4, v5.4H
529
__ addv(v7, __ T8H, v8); // addv h7, v8.8H
530
__ addv(v6, __ T4S, v7); // addv s6, v7.4S
531
__ smaxv(v1, __ T8B, v2); // smaxv b1, v2.8B
532
__ smaxv(v26, __ T16B, v27); // smaxv b26, v27.16B
533
__ smaxv(v15, __ T4H, v16); // smaxv h15, v16.4H
534
__ smaxv(v2, __ T8H, v3); // smaxv h2, v3.8H
535
__ smaxv(v13, __ T4S, v14); // smaxv s13, v14.4S
536
__ fmaxv(v13, __ T4S, v14); // fmaxv s13, v14.4S
537
__ sminv(v24, __ T8B, v25); // sminv b24, v25.8B
538
__ uminv(v23, __ T8B, v24); // uminv b23, v24.8B
539
__ sminv(v4, __ T16B, v5); // sminv b4, v5.16B
540
__ uminv(v19, __ T16B, v20); // uminv b19, v20.16B
541
__ sminv(v15, __ T4H, v16); // sminv h15, v16.4H
542
__ uminv(v0, __ T4H, v1); // uminv h0, v1.4H
543
__ sminv(v4, __ T8H, v5); // sminv h4, v5.8H
544
__ uminv(v20, __ T8H, v21); // uminv h20, v21.8H
545
__ sminv(v11, __ T4S, v12); // sminv s11, v12.4S
546
__ uminv(v29, __ T4S, v30); // uminv s29, v30.4S
547
__ fminv(v15, __ T4S, v16); // fminv s15, v16.4S
548
__ fmaxp(v21, v22, __ S); // fmaxp s21, v22.2S
549
__ fmaxp(v4, v5, __ D); // fmaxp d4, v5.2D
550
__ fminp(v14, v15, __ S); // fminp s14, v15.2S
551
__ fminp(v22, v23, __ D); // fminp d22, v23.2D
552
553
// TwoRegNEONOp
554
__ absr(v25, __ T8B, v26); // abs v25.8B, v26.8B
555
__ absr(v6, __ T16B, v7); // abs v6.16B, v7.16B
556
__ absr(v12, __ T4H, v13); // abs v12.4H, v13.4H
557
__ absr(v14, __ T8H, v15); // abs v14.8H, v15.8H
558
__ absr(v13, __ T2S, v14); // abs v13.2S, v14.2S
559
__ absr(v14, __ T4S, v15); // abs v14.4S, v15.4S
560
__ absr(v9, __ T2D, v10); // abs v9.2D, v10.2D
561
__ fabs(v25, __ T2S, v26); // fabs v25.2S, v26.2S
562
__ fabs(v28, __ T4S, v29); // fabs v28.4S, v29.4S
563
__ fabs(v10, __ T2D, v11); // fabs v10.2D, v11.2D
564
__ fneg(v19, __ T2S, v20); // fneg v19.2S, v20.2S
565
__ fneg(v11, __ T4S, v12); // fneg v11.4S, v12.4S
566
__ fneg(v17, __ T2D, v18); // fneg v17.2D, v18.2D
567
__ fsqrt(v21, __ T2S, v22); // fsqrt v21.2S, v22.2S
568
__ fsqrt(v15, __ T4S, v16); // fsqrt v15.4S, v16.4S
569
__ fsqrt(v20, __ T2D, v21); // fsqrt v20.2D, v21.2D
570
__ notr(v23, __ T8B, v24); // not v23.8B, v24.8B
571
__ notr(v26, __ T16B, v27); // not v26.16B, v27.16B
572
573
// ThreeRegNEONOp
574
__ andr(v5, __ T8B, v6, v7); // and v5.8B, v6.8B, v7.8B
575
__ andr(v6, __ T16B, v7, v8); // and v6.16B, v7.16B, v8.16B
576
__ orr(v15, __ T8B, v16, v17); // orr v15.8B, v16.8B, v17.8B
577
__ orr(v15, __ T16B, v16, v17); // orr v15.16B, v16.16B, v17.16B
578
__ eor(v25, __ T8B, v26, v27); // eor v25.8B, v26.8B, v27.8B
579
__ eor(v16, __ T16B, v17, v18); // eor v16.16B, v17.16B, v18.16B
580
__ addv(v27, __ T8B, v28, v29); // add v27.8B, v28.8B, v29.8B
581
__ addv(v24, __ T16B, v25, v26); // add v24.16B, v25.16B, v26.16B
582
__ addv(v15, __ T4H, v16, v17); // add v15.4H, v16.4H, v17.4H
583
__ addv(v25, __ T8H, v26, v27); // add v25.8H, v26.8H, v27.8H
584
__ addv(v14, __ T2S, v15, v16); // add v14.2S, v15.2S, v16.2S
585
__ addv(v10, __ T4S, v11, v12); // add v10.4S, v11.4S, v12.4S
586
__ addv(v13, __ T2D, v14, v15); // add v13.2D, v14.2D, v15.2D
587
__ fadd(v14, __ T2S, v15, v16); // fadd v14.2S, v15.2S, v16.2S
588
__ fadd(v20, __ T4S, v21, v22); // fadd v20.4S, v21.4S, v22.4S
589
__ fadd(v1, __ T2D, v2, v3); // fadd v1.2D, v2.2D, v3.2D
590
__ subv(v22, __ T8B, v23, v24); // sub v22.8B, v23.8B, v24.8B
591
__ subv(v30, __ T16B, v31, v0); // sub v30.16B, v31.16B, v0.16B
592
__ subv(v14, __ T4H, v15, v16); // sub v14.4H, v15.4H, v16.4H
593
__ subv(v2, __ T8H, v3, v4); // sub v2.8H, v3.8H, v4.8H
594
__ subv(v6, __ T2S, v7, v8); // sub v6.2S, v7.2S, v8.2S
595
__ subv(v3, __ T4S, v4, v5); // sub v3.4S, v4.4S, v5.4S
596
__ subv(v7, __ T2D, v8, v9); // sub v7.2D, v8.2D, v9.2D
597
__ fsub(v24, __ T2S, v25, v26); // fsub v24.2S, v25.2S, v26.2S
598
__ fsub(v0, __ T4S, v1, v2); // fsub v0.4S, v1.4S, v2.4S
599
__ fsub(v27, __ T2D, v28, v29); // fsub v27.2D, v28.2D, v29.2D
600
__ mulv(v29, __ T8B, v30, v31); // mul v29.8B, v30.8B, v31.8B
601
__ mulv(v5, __ T16B, v6, v7); // mul v5.16B, v6.16B, v7.16B
602
__ mulv(v5, __ T4H, v6, v7); // mul v5.4H, v6.4H, v7.4H
603
__ mulv(v29, __ T8H, v30, v31); // mul v29.8H, v30.8H, v31.8H
604
__ mulv(v11, __ T2S, v12, v13); // mul v11.2S, v12.2S, v13.2S
605
__ mulv(v25, __ T4S, v26, v27); // mul v25.4S, v26.4S, v27.4S
606
__ fabd(v0, __ T2S, v1, v2); // fabd v0.2S, v1.2S, v2.2S
607
__ fabd(v30, __ T4S, v31, v0); // fabd v30.4S, v31.4S, v0.4S
608
__ fabd(v0, __ T2D, v1, v2); // fabd v0.2D, v1.2D, v2.2D
609
__ fmul(v17, __ T2S, v18, v19); // fmul v17.2S, v18.2S, v19.2S
610
__ fmul(v28, __ T4S, v29, v30); // fmul v28.4S, v29.4S, v30.4S
611
__ fmul(v25, __ T2D, v26, v27); // fmul v25.2D, v26.2D, v27.2D
612
__ mlav(v9, __ T4H, v10, v11); // mla v9.4H, v10.4H, v11.4H
613
__ mlav(v25, __ T8H, v26, v27); // mla v25.8H, v26.8H, v27.8H
614
__ mlav(v12, __ T2S, v13, v14); // mla v12.2S, v13.2S, v14.2S
615
__ mlav(v15, __ T4S, v16, v17); // mla v15.4S, v16.4S, v17.4S
616
__ fmla(v11, __ T2S, v12, v13); // fmla v11.2S, v12.2S, v13.2S
617
__ fmla(v10, __ T4S, v11, v12); // fmla v10.4S, v11.4S, v12.4S
618
__ fmla(v17, __ T2D, v18, v19); // fmla v17.2D, v18.2D, v19.2D
619
__ mlsv(v24, __ T4H, v25, v26); // mls v24.4H, v25.4H, v26.4H
620
__ mlsv(v21, __ T8H, v22, v23); // mls v21.8H, v22.8H, v23.8H
621
__ mlsv(v23, __ T2S, v24, v25); // mls v23.2S, v24.2S, v25.2S
622
__ mlsv(v0, __ T4S, v1, v2); // mls v0.4S, v1.4S, v2.4S
623
__ fmls(v16, __ T2S, v17, v18); // fmls v16.2S, v17.2S, v18.2S
624
__ fmls(v10, __ T4S, v11, v12); // fmls v10.4S, v11.4S, v12.4S
625
__ fmls(v6, __ T2D, v7, v8); // fmls v6.2D, v7.2D, v8.2D
626
__ fdiv(v28, __ T2S, v29, v30); // fdiv v28.2S, v29.2S, v30.2S
627
__ fdiv(v6, __ T4S, v7, v8); // fdiv v6.4S, v7.4S, v8.4S
628
__ fdiv(v5, __ T2D, v6, v7); // fdiv v5.2D, v6.2D, v7.2D
629
__ maxv(v5, __ T8B, v6, v7); // smax v5.8B, v6.8B, v7.8B
630
__ maxv(v20, __ T16B, v21, v22); // smax v20.16B, v21.16B, v22.16B
631
__ maxv(v17, __ T4H, v18, v19); // smax v17.4H, v18.4H, v19.4H
632
__ maxv(v15, __ T8H, v16, v17); // smax v15.8H, v16.8H, v17.8H
633
__ maxv(v17, __ T2S, v18, v19); // smax v17.2S, v18.2S, v19.2S
634
__ maxv(v29, __ T4S, v30, v31); // smax v29.4S, v30.4S, v31.4S
635
__ smaxp(v26, __ T8B, v27, v28); // smaxp v26.8B, v27.8B, v28.8B
636
__ smaxp(v28, __ T16B, v29, v30); // smaxp v28.16B, v29.16B, v30.16B
637
__ smaxp(v1, __ T4H, v2, v3); // smaxp v1.4H, v2.4H, v3.4H
638
__ smaxp(v27, __ T8H, v28, v29); // smaxp v27.8H, v28.8H, v29.8H
639
__ smaxp(v0, __ T2S, v1, v2); // smaxp v0.2S, v1.2S, v2.2S
640
__ smaxp(v20, __ T4S, v21, v22); // smaxp v20.4S, v21.4S, v22.4S
641
__ fmax(v28, __ T2S, v29, v30); // fmax v28.2S, v29.2S, v30.2S
642
__ fmax(v15, __ T4S, v16, v17); // fmax v15.4S, v16.4S, v17.4S
643
__ fmax(v12, __ T2D, v13, v14); // fmax v12.2D, v13.2D, v14.2D
644
__ minv(v10, __ T8B, v11, v12); // smin v10.8B, v11.8B, v12.8B
645
__ minv(v28, __ T16B, v29, v30); // smin v28.16B, v29.16B, v30.16B
646
__ minv(v28, __ T4H, v29, v30); // smin v28.4H, v29.4H, v30.4H
647
__ minv(v19, __ T8H, v20, v21); // smin v19.8H, v20.8H, v21.8H
648
__ minv(v22, __ T2S, v23, v24); // smin v22.2S, v23.2S, v24.2S
649
__ minv(v10, __ T4S, v11, v12); // smin v10.4S, v11.4S, v12.4S
650
__ sminp(v4, __ T8B, v5, v6); // sminp v4.8B, v5.8B, v6.8B
651
__ sminp(v30, __ T16B, v31, v0); // sminp v30.16B, v31.16B, v0.16B
652
__ sminp(v20, __ T4H, v21, v22); // sminp v20.4H, v21.4H, v22.4H
653
__ sminp(v8, __ T8H, v9, v10); // sminp v8.8H, v9.8H, v10.8H
654
__ sminp(v30, __ T2S, v31, v0); // sminp v30.2S, v31.2S, v0.2S
655
__ sminp(v17, __ T4S, v18, v19); // sminp v17.4S, v18.4S, v19.4S
656
__ fmin(v10, __ T2S, v11, v12); // fmin v10.2S, v11.2S, v12.2S
657
__ fmin(v27, __ T4S, v28, v29); // fmin v27.4S, v28.4S, v29.4S
658
__ fmin(v2, __ T2D, v3, v4); // fmin v2.2D, v3.2D, v4.2D
659
__ cmeq(v24, __ T8B, v25, v26); // cmeq v24.8B, v25.8B, v26.8B
660
__ cmeq(v4, __ T16B, v5, v6); // cmeq v4.16B, v5.16B, v6.16B
661
__ cmeq(v3, __ T4H, v4, v5); // cmeq v3.4H, v4.4H, v5.4H
662
__ cmeq(v8, __ T8H, v9, v10); // cmeq v8.8H, v9.8H, v10.8H
663
__ cmeq(v22, __ T2S, v23, v24); // cmeq v22.2S, v23.2S, v24.2S
664
__ cmeq(v17, __ T4S, v18, v19); // cmeq v17.4S, v18.4S, v19.4S
665
__ cmeq(v13, __ T2D, v14, v15); // cmeq v13.2D, v14.2D, v15.2D
666
__ fcmeq(v4, __ T2S, v5, v6); // fcmeq v4.2S, v5.2S, v6.2S
667
__ fcmeq(v28, __ T4S, v29, v30); // fcmeq v28.4S, v29.4S, v30.4S
668
__ fcmeq(v23, __ T2D, v24, v25); // fcmeq v23.2D, v24.2D, v25.2D
669
__ cmgt(v21, __ T8B, v22, v23); // cmgt v21.8B, v22.8B, v23.8B
670
__ cmgt(v25, __ T16B, v26, v27); // cmgt v25.16B, v26.16B, v27.16B
671
__ cmgt(v24, __ T4H, v25, v26); // cmgt v24.4H, v25.4H, v26.4H
672
__ cmgt(v3, __ T8H, v4, v5); // cmgt v3.8H, v4.8H, v5.8H
673
__ cmgt(v23, __ T2S, v24, v25); // cmgt v23.2S, v24.2S, v25.2S
674
__ cmgt(v26, __ T4S, v27, v28); // cmgt v26.4S, v27.4S, v28.4S
675
__ cmgt(v23, __ T2D, v24, v25); // cmgt v23.2D, v24.2D, v25.2D
676
__ fcmgt(v14, __ T2S, v15, v16); // fcmgt v14.2S, v15.2S, v16.2S
677
__ fcmgt(v21, __ T4S, v22, v23); // fcmgt v21.4S, v22.4S, v23.4S
678
__ fcmgt(v3, __ T2D, v4, v5); // fcmgt v3.2D, v4.2D, v5.2D
679
__ cmge(v23, __ T8B, v24, v25); // cmge v23.8B, v24.8B, v25.8B
680
__ cmge(v8, __ T16B, v9, v10); // cmge v8.16B, v9.16B, v10.16B
681
__ cmge(v24, __ T4H, v25, v26); // cmge v24.4H, v25.4H, v26.4H
682
__ cmge(v19, __ T8H, v20, v21); // cmge v19.8H, v20.8H, v21.8H
683
__ cmge(v15, __ T2S, v16, v17); // cmge v15.2S, v16.2S, v17.2S
684
__ cmge(v16, __ T4S, v17, v18); // cmge v16.4S, v17.4S, v18.4S
685
__ cmge(v2, __ T2D, v3, v4); // cmge v2.2D, v3.2D, v4.2D
686
__ fcmge(v1, __ T2S, v2, v3); // fcmge v1.2S, v2.2S, v3.2S
687
__ fcmge(v0, __ T4S, v1, v2); // fcmge v0.4S, v1.4S, v2.4S
688
__ fcmge(v24, __ T2D, v25, v26); // fcmge v24.2D, v25.2D, v26.2D
689
690
// SpecialCases
691
__ ccmn(zr, zr, 3u, Assembler::LE); // ccmn xzr, xzr, #3, LE
692
__ ccmnw(zr, zr, 5u, Assembler::EQ); // ccmn wzr, wzr, #5, EQ
693
__ ccmp(zr, 1, 4u, Assembler::NE); // ccmp xzr, 1, #4, NE
694
__ ccmpw(zr, 2, 2, Assembler::GT); // ccmp wzr, 2, #2, GT
695
__ extr(zr, zr, zr, 0); // extr xzr, xzr, xzr, 0
696
__ stlxp(r0, zr, zr, sp); // stlxp w0, xzr, xzr, [sp]
697
__ stlxpw(r2, zr, zr, r3); // stlxp w2, wzr, wzr, [x3]
698
__ stxp(r4, zr, zr, r5); // stxp w4, xzr, xzr, [x5]
699
__ stxpw(r6, zr, zr, sp); // stxp w6, wzr, wzr, [sp]
700
__ dup(v0, __ T16B, zr); // dup v0.16b, wzr
701
__ mov(v1, __ T1D, 0, zr); // mov v1.d[0], xzr
702
__ mov(v1, __ T2S, 1, zr); // mov v1.s[1], wzr
703
__ mov(v1, __ T4H, 2, zr); // mov v1.h[2], wzr
704
__ mov(v1, __ T8B, 3, zr); // mov v1.b[3], wzr
705
__ smov(r0, v1, __ S, 0); // smov x0, v1.s[0]
706
__ smov(r0, v1, __ H, 1); // smov x0, v1.h[1]
707
__ smov(r0, v1, __ B, 2); // smov x0, v1.b[2]
708
__ umov(r0, v1, __ D, 0); // umov x0, v1.d[0]
709
__ umov(r0, v1, __ S, 1); // umov w0, v1.s[1]
710
__ umov(r0, v1, __ H, 2); // umov w0, v1.h[2]
711
__ umov(r0, v1, __ B, 3); // umov w0, v1.b[3]
712
__ ld1(v31, v0, __ T2D, Address(__ post(r1, r0))); // ld1 {v31.2d, v0.2d}, [x1], x0
713
__ sve_cpy(z0, __ S, p0, v1); // mov z0.s, p0/m, s1
714
__ sve_inc(r0, __ S); // incw x0
715
__ sve_dec(r1, __ H); // dech x1
716
__ sve_lsl(z0, __ B, z1, 7); // lsl z0.b, z1.b, #7
717
__ sve_lsl(z21, __ H, z1, 15); // lsl z21.h, z1.h, #15
718
__ sve_lsl(z0, __ S, z1, 31); // lsl z0.s, z1.s, #31
719
__ sve_lsl(z0, __ D, z1, 63); // lsl z0.d, z1.d, #63
720
__ sve_lsr(z0, __ B, z1, 7); // lsr z0.b, z1.b, #7
721
__ sve_asr(z0, __ H, z11, 15); // asr z0.h, z11.h, #15
722
__ sve_lsr(z30, __ S, z1, 31); // lsr z30.s, z1.s, #31
723
__ sve_asr(z0, __ D, z1, 63); // asr z0.d, z1.d, #63
724
__ sve_addvl(sp, r0, 31); // addvl sp, x0, #31
725
__ sve_addpl(r1, sp, -32); // addpl x1, sp, -32
726
__ sve_cntp(r8, __ B, p0, p1); // cntp x8, p0, p1.b
727
__ sve_dup(z0, __ B, 127); // dup z0.b, 127
728
__ sve_dup(z1, __ H, -128); // dup z1.h, -128
729
__ sve_dup(z2, __ S, 32512); // dup z2.s, 32512
730
__ sve_dup(z7, __ D, -32768); // dup z7.d, -32768
731
__ sve_ld1b(z0, __ B, p0, Address(sp)); // ld1b {z0.b}, p0/z, [sp]
732
__ sve_ld1h(z10, __ H, p1, Address(sp, -8)); // ld1h {z10.h}, p1/z, [sp, #-8, MUL VL]
733
__ sve_ld1w(z20, __ S, p2, Address(r0, 7)); // ld1w {z20.s}, p2/z, [x0, #7, MUL VL]
734
__ sve_ld1b(z30, __ B, p3, Address(sp, r8)); // ld1b {z30.b}, p3/z, [sp, x8]
735
__ sve_ld1w(z0, __ S, p4, Address(sp, r28)); // ld1w {z0.s}, p4/z, [sp, x28, LSL #2]
736
__ sve_ld1d(z11, __ D, p5, Address(r0, r1)); // ld1d {z11.d}, p5/z, [x0, x1, LSL #3]
737
__ sve_st1b(z22, __ B, p6, Address(sp)); // st1b {z22.b}, p6, [sp]
738
__ sve_st1b(z31, __ B, p7, Address(sp, -8)); // st1b {z31.b}, p7, [sp, #-8, MUL VL]
739
__ sve_st1w(z0, __ S, p1, Address(r0, 7)); // st1w {z0.s}, p1, [x0, #7, MUL VL]
740
__ sve_st1b(z0, __ B, p2, Address(sp, r1)); // st1b {z0.b}, p2, [sp, x1]
741
__ sve_st1h(z0, __ H, p3, Address(sp, r8)); // st1h {z0.h}, p3, [sp, x8, LSL #1]
742
__ sve_st1d(z0, __ D, p4, Address(r0, r17)); // st1d {z0.d}, p4, [x0, x17, LSL #3]
743
__ sve_ldr(z0, Address(sp)); // ldr z0, [sp]
744
__ sve_ldr(z31, Address(sp, -256)); // ldr z31, [sp, #-256, MUL VL]
745
__ sve_str(z8, Address(r8, 255)); // str z8, [x8, #255, MUL VL]
746
747
// FloatImmediateOp
748
__ fmovd(v0, 2.0); // fmov d0, #2.0
749
__ fmovd(v0, 2.125); // fmov d0, #2.125
750
__ fmovd(v0, 4.0); // fmov d0, #4.0
751
__ fmovd(v0, 4.25); // fmov d0, #4.25
752
__ fmovd(v0, 8.0); // fmov d0, #8.0
753
__ fmovd(v0, 8.5); // fmov d0, #8.5
754
__ fmovd(v0, 16.0); // fmov d0, #16.0
755
__ fmovd(v0, 17.0); // fmov d0, #17.0
756
__ fmovd(v0, 0.125); // fmov d0, #0.125
757
__ fmovd(v0, 0.1328125); // fmov d0, #0.1328125
758
__ fmovd(v0, 0.25); // fmov d0, #0.25
759
__ fmovd(v0, 0.265625); // fmov d0, #0.265625
760
__ fmovd(v0, 0.5); // fmov d0, #0.5
761
__ fmovd(v0, 0.53125); // fmov d0, #0.53125
762
__ fmovd(v0, 1.0); // fmov d0, #1.0
763
__ fmovd(v0, 1.0625); // fmov d0, #1.0625
764
__ fmovd(v0, -2.0); // fmov d0, #-2.0
765
__ fmovd(v0, -2.125); // fmov d0, #-2.125
766
__ fmovd(v0, -4.0); // fmov d0, #-4.0
767
__ fmovd(v0, -4.25); // fmov d0, #-4.25
768
__ fmovd(v0, -8.0); // fmov d0, #-8.0
769
__ fmovd(v0, -8.5); // fmov d0, #-8.5
770
__ fmovd(v0, -16.0); // fmov d0, #-16.0
771
__ fmovd(v0, -17.0); // fmov d0, #-17.0
772
__ fmovd(v0, -0.125); // fmov d0, #-0.125
773
__ fmovd(v0, -0.1328125); // fmov d0, #-0.1328125
774
__ fmovd(v0, -0.25); // fmov d0, #-0.25
775
__ fmovd(v0, -0.265625); // fmov d0, #-0.265625
776
__ fmovd(v0, -0.5); // fmov d0, #-0.5
777
__ fmovd(v0, -0.53125); // fmov d0, #-0.53125
778
__ fmovd(v0, -1.0); // fmov d0, #-1.0
779
__ fmovd(v0, -1.0625); // fmov d0, #-1.0625
780
781
// LSEOp
782
__ swp(Assembler::xword, r4, r3, r12); // swp x4, x3, [x12]
783
__ ldadd(Assembler::xword, zr, r28, r10); // ldadd xzr, x28, [x10]
784
__ ldbic(Assembler::xword, r26, r2, r12); // ldclr x26, x2, [x12]
785
__ ldeor(Assembler::xword, r16, zr, r1); // ldeor x16, xzr, [x1]
786
__ ldorr(Assembler::xword, r13, r29, r0); // ldset x13, x29, [x0]
787
__ ldsmin(Assembler::xword, r19, r12, r17); // ldsmin x19, x12, [x17]
788
__ ldsmax(Assembler::xword, r22, r13, r28); // ldsmax x22, x13, [x28]
789
__ ldumin(Assembler::xword, r30, zr, r1); // ldumin x30, xzr, [x1]
790
__ ldumax(Assembler::xword, r26, r28, r4); // ldumax x26, x28, [x4]
791
792
// LSEOp
793
__ swpa(Assembler::xword, r30, r4, r6); // swpa x30, x4, [x6]
794
__ ldadda(Assembler::xword, r30, r26, r15); // ldadda x30, x26, [x15]
795
__ ldbica(Assembler::xword, r9, r8, r12); // ldclra x9, x8, [x12]
796
__ ldeora(Assembler::xword, r0, r20, r1); // ldeora x0, x20, [x1]
797
__ ldorra(Assembler::xword, r24, r2, r0); // ldseta x24, x2, [x0]
798
__ ldsmina(Assembler::xword, r9, r24, r26); // ldsmina x9, x24, [x26]
799
__ ldsmaxa(Assembler::xword, r16, r30, r3); // ldsmaxa x16, x30, [x3]
800
__ ldumina(Assembler::xword, r10, r23, r10); // ldumina x10, x23, [x10]
801
__ ldumaxa(Assembler::xword, r4, r16, r2); // ldumaxa x4, x16, [x2]
802
803
// LSEOp
804
__ swpal(Assembler::xword, r11, r8, r10); // swpal x11, x8, [x10]
805
__ ldaddal(Assembler::xword, r15, r17, r2); // ldaddal x15, x17, [x2]
806
__ ldbical(Assembler::xword, r10, r12, r12); // ldclral x10, x12, [x12]
807
__ ldeoral(Assembler::xword, r15, r13, r2); // ldeoral x15, x13, [x2]
808
__ ldorral(Assembler::xword, r7, r20, r26); // ldsetal x7, x20, [x26]
809
__ ldsminal(Assembler::xword, r16, r4, r2); // ldsminal x16, x4, [x2]
810
__ ldsmaxal(Assembler::xword, r4, r12, r15); // ldsmaxal x4, x12, [x15]
811
__ lduminal(Assembler::xword, r21, r16, r15); // lduminal x21, x16, [x15]
812
__ ldumaxal(Assembler::xword, r11, r21, r23); // ldumaxal x11, x21, [x23]
813
814
// LSEOp
815
__ swpl(Assembler::xword, r12, r26, r23); // swpl x12, x26, [x23]
816
__ ldaddl(Assembler::xword, r28, r14, r11); // ldaddl x28, x14, [x11]
817
__ ldbicl(Assembler::xword, r24, r1, r12); // ldclrl x24, x1, [x12]
818
__ ldeorl(Assembler::xword, zr, r10, r16); // ldeorl xzr, x10, [x16]
819
__ ldorrl(Assembler::xword, r7, r2, r3); // ldsetl x7, x2, [x3]
820
__ ldsminl(Assembler::xword, r13, r19, r17); // ldsminl x13, x19, [x17]
821
__ ldsmaxl(Assembler::xword, r16, r3, r1); // ldsmaxl x16, x3, [x1]
822
__ lduminl(Assembler::xword, r11, r30, r5); // lduminl x11, x30, [x5]
823
__ ldumaxl(Assembler::xword, r8, r15, r29); // ldumaxl x8, x15, [x29]
824
825
// LSEOp
826
__ swp(Assembler::word, r30, r0, r20); // swp w30, w0, [x20]
827
__ ldadd(Assembler::word, r7, r20, r23); // ldadd w7, w20, [x23]
828
__ ldbic(Assembler::word, r28, r21, r27); // ldclr w28, w21, [x27]
829
__ ldeor(Assembler::word, r25, r5, r1); // ldeor w25, w5, [x1]
830
__ ldorr(Assembler::word, r23, r16, sp); // ldset w23, w16, [sp]
831
__ ldsmin(Assembler::word, r5, r12, r9); // ldsmin w5, w12, [x9]
832
__ ldsmax(Assembler::word, r28, r15, r29); // ldsmax w28, w15, [x29]
833
__ ldumin(Assembler::word, r22, zr, r19); // ldumin w22, wzr, [x19]
834
__ ldumax(Assembler::word, zr, r5, r14); // ldumax wzr, w5, [x14]
835
836
// LSEOp
837
__ swpa(Assembler::word, r16, zr, r15); // swpa w16, wzr, [x15]
838
__ ldadda(Assembler::word, r27, r20, r16); // ldadda w27, w20, [x16]
839
__ ldbica(Assembler::word, r12, r11, r9); // ldclra w12, w11, [x9]
840
__ ldeora(Assembler::word, r6, r30, r17); // ldeora w6, w30, [x17]
841
__ ldorra(Assembler::word, r27, r28, r30); // ldseta w27, w28, [x30]
842
__ ldsmina(Assembler::word, r7, r10, r20); // ldsmina w7, w10, [x20]
843
__ ldsmaxa(Assembler::word, r10, r4, r24); // ldsmaxa w10, w4, [x24]
844
__ ldumina(Assembler::word, r17, r17, r22); // ldumina w17, w17, [x22]
845
__ ldumaxa(Assembler::word, r3, r29, r15); // ldumaxa w3, w29, [x15]
846
847
// LSEOp
848
__ swpal(Assembler::word, r22, r19, r19); // swpal w22, w19, [x19]
849
__ ldaddal(Assembler::word, r22, r2, r15); // ldaddal w22, w2, [x15]
850
__ ldbical(Assembler::word, r6, r12, r16); // ldclral w6, w12, [x16]
851
__ ldeoral(Assembler::word, r11, r13, r23); // ldeoral w11, w13, [x23]
852
__ ldorral(Assembler::word, r1, r30, r19); // ldsetal w1, w30, [x19]
853
__ ldsminal(Assembler::word, r5, r17, r2); // ldsminal w5, w17, [x2]
854
__ ldsmaxal(Assembler::word, r16, r22, r13); // ldsmaxal w16, w22, [x13]
855
__ lduminal(Assembler::word, r10, r21, r29); // lduminal w10, w21, [x29]
856
__ ldumaxal(Assembler::word, r27, r12, r27); // ldumaxal w27, w12, [x27]
857
858
// LSEOp
859
__ swpl(Assembler::word, r3, r1, sp); // swpl w3, w1, [sp]
860
__ ldaddl(Assembler::word, r24, r19, r17); // ldaddl w24, w19, [x17]
861
__ ldbicl(Assembler::word, r9, r28, r27); // ldclrl w9, w28, [x27]
862
__ ldeorl(Assembler::word, r15, r7, r21); // ldeorl w15, w7, [x21]
863
__ ldorrl(Assembler::word, r23, zr, r25); // ldsetl w23, wzr, [x25]
864
__ ldsminl(Assembler::word, r2, zr, r27); // ldsminl w2, wzr, [x27]
865
__ ldsmaxl(Assembler::word, r16, r10, r23); // ldsmaxl w16, w10, [x23]
866
__ lduminl(Assembler::word, r19, r3, r15); // lduminl w19, w3, [x15]
867
__ ldumaxl(Assembler::word, r0, r25, r26); // ldumaxl w0, w25, [x26]
868
869
// SHA3SIMDOp
870
__ bcax(v22, __ T16B, v2, v17, v12); // bcax v22.16B, v2.16B, v17.16B, v12.16B
871
__ eor3(v3, __ T16B, v27, v29, v28); // eor3 v3.16B, v27.16B, v29.16B, v28.16B
872
__ rax1(v16, __ T2D, v26, v6); // rax1 v16.2D, v26.2D, v6.2D
873
__ xar(v9, __ T2D, v28, v17, 14); // xar v9.2D, v28.2D, v17.2D, #14
874
875
// SHA512SIMDOp
876
__ sha512h(v4, __ T2D, v7, v15); // sha512h q4, q7, v15.2D
877
__ sha512h2(v9, __ T2D, v22, v8); // sha512h2 q9, q22, v8.2D
878
__ sha512su0(v2, __ T2D, v27); // sha512su0 v2.2D, v27.2D
879
__ sha512su1(v20, __ T2D, v30, v5); // sha512su1 v20.2D, v30.2D, v5.2D
880
881
// SVEVectorOp
882
__ sve_add(z26, __ H, z0, z16); // add z26.h, z0.h, z16.h
883
__ sve_sub(z3, __ D, z25, z8); // sub z3.d, z25.d, z8.d
884
__ sve_fadd(z21, __ D, z26, z26); // fadd z21.d, z26.d, z26.d
885
__ sve_fmul(z22, __ S, z0, z4); // fmul z22.s, z0.s, z4.s
886
__ sve_fsub(z17, __ S, z0, z3); // fsub z17.s, z0.s, z3.s
887
__ sve_abs(z1, __ B, p2, z6); // abs z1.b, p2/m, z6.b
888
__ sve_add(z9, __ S, p7, z7); // add z9.s, p7/m, z9.s, z7.s
889
__ sve_asr(z22, __ H, p5, z5); // asr z22.h, p5/m, z22.h, z5.h
890
__ sve_cnt(z8, __ B, p4, z30); // cnt z8.b, p4/m, z30.b
891
__ sve_lsl(z17, __ D, p0, z11); // lsl z17.d, p0/m, z17.d, z11.d
892
__ sve_lsr(z28, __ S, p0, z26); // lsr z28.s, p0/m, z28.s, z26.s
893
__ sve_mul(z28, __ D, p3, z13); // mul z28.d, p3/m, z28.d, z13.d
894
__ sve_neg(z16, __ B, p6, z5); // neg z16.b, p6/m, z5.b
895
__ sve_not(z13, __ H, p2, z15); // not z13.h, p2/m, z15.h
896
__ sve_smax(z26, __ B, p5, z11); // smax z26.b, p5/m, z26.b, z11.b
897
__ sve_smin(z22, __ B, p4, z4); // smin z22.b, p4/m, z22.b, z4.b
898
__ sve_sub(z19, __ H, p4, z17); // sub z19.h, p4/m, z19.h, z17.h
899
__ sve_fabs(z14, __ D, p3, z2); // fabs z14.d, p3/m, z2.d
900
__ sve_fadd(z3, __ S, p5, z23); // fadd z3.s, p5/m, z3.s, z23.s
901
__ sve_fdiv(z6, __ S, p1, z17); // fdiv z6.s, p1/m, z6.s, z17.s
902
__ sve_fmax(z27, __ S, p4, z16); // fmax z27.s, p4/m, z27.s, z16.s
903
__ sve_fmin(z2, __ S, p7, z3); // fmin z2.s, p7/m, z2.s, z3.s
904
__ sve_fmul(z6, __ S, p4, z19); // fmul z6.s, p4/m, z6.s, z19.s
905
__ sve_fneg(z12, __ D, p5, z8); // fneg z12.d, p5/m, z8.d
906
__ sve_frintm(z19, __ S, p4, z0); // frintm z19.s, p4/m, z0.s
907
__ sve_frintn(z23, __ D, p1, z19); // frintn z23.d, p1/m, z19.d
908
__ sve_frintp(z13, __ S, p4, z6); // frintp z13.s, p4/m, z6.s
909
__ sve_fsqrt(z7, __ D, p3, z17); // fsqrt z7.d, p3/m, z17.d
910
__ sve_fsub(z8, __ D, p2, z22); // fsub z8.d, p2/m, z8.d, z22.d
911
__ sve_fmla(z22, __ S, p7, z2, z3); // fmla z22.s, p7/m, z2.s, z3.s
912
__ sve_fmls(z17, __ D, p5, z7, z4); // fmls z17.d, p5/m, z7.d, z4.d
913
__ sve_fnmla(z7, __ D, p0, z8, z16); // fnmla z7.d, p0/m, z8.d, z16.d
914
__ sve_fnmls(z22, __ D, p1, z15, z9); // fnmls z22.d, p1/m, z15.d, z9.d
915
__ sve_mla(z11, __ S, p6, z5, z30); // mla z11.s, p6/m, z5.s, z30.s
916
__ sve_mls(z13, __ H, p5, z11, z1); // mls z13.h, p5/m, z11.h, z1.h
917
__ sve_and(z8, z20, z16); // and z8.d, z20.d, z16.d
918
__ sve_eor(z15, z4, z4); // eor z15.d, z4.d, z4.d
919
__ sve_orr(z8, z6, z29); // orr z8.d, z6.d, z29.d
920
__ sve_bic(z28, z16, z29); // bic z28.d, z16.d, z29.d
921
922
// SVEReductionOp
923
__ sve_andv(v9, __ H, p3, z2); // andv h9, p3, z2.h
924
__ sve_orv(v28, __ B, p0, z7); // orv b28, p0, z7.b
925
__ sve_eorv(v26, __ H, p5, z17); // eorv h26, p5, z17.h
926
__ sve_smaxv(v8, __ D, p4, z21); // smaxv d8, p4, z21.d
927
__ sve_sminv(v5, __ S, p5, z21); // sminv s5, p5, z21.s
928
__ sve_fminv(v22, __ D, p4, z29); // fminv d22, p4, z29.d
929
__ sve_fmaxv(v19, __ D, p0, z4); // fmaxv d19, p0, z4.d
930
__ sve_fadda(v23, __ S, p1, z19); // fadda s23, p1, s23, z19.s
931
__ sve_uaddv(v23, __ B, p6, z19); // uaddv d23, p6, z19.b
932
933
__ bind(forth);
934
935
/*
936
*/
937
938
static const unsigned int insns[] =
939
{
940
0x8b0d82fa, 0xcb49970c, 0xab889dfc, 0xeb9ee787,
941
0x0b9b3ec9, 0x4b9179a3, 0x2b88474e, 0x6b8c56c0,
942
0x8a1a51e0, 0xaa11f4ba, 0xca0281b8, 0xea918c7c,
943
0x0a5d4a19, 0x2a4b262d, 0x4a513ca5, 0x6a9b6ae2,
944
0x8a70b79b, 0xaaba9728, 0xca6dfe3d, 0xea627f1c,
945
0x0aa70f53, 0x2aaa0f06, 0x4a6176a4, 0x6a604eb0,
946
0x1105ed91, 0x3100583e, 0x5101f8bd, 0x710f0306,
947
0x9101a1a0, 0xb10a5cc8, 0xd10810aa, 0xf10fd061,
948
0x120cb166, 0x321764bc, 0x52174681, 0x720c0227,
949
0x9241018e, 0xb25a2969, 0xd278b411, 0xf26aad01,
950
0x14000000, 0x17ffffd7, 0x140002ed, 0x94000000,
951
0x97ffffd4, 0x940002ea, 0x3400000a, 0x34fffa2a,
952
0x34005cea, 0x35000008, 0x35fff9c8, 0x35005c88,
953
0xb400000b, 0xb4fff96b, 0xb4005c2b, 0xb500001d,
954
0xb5fff91d, 0xb5005bdd, 0x10000013, 0x10fff8b3,
955
0x10005b73, 0x90000013, 0x36300016, 0x3637f836,
956
0x36305af6, 0x3758000c, 0x375ff7cc, 0x37585a8c,
957
0x128313a0, 0x528a32c7, 0x7289173b, 0x92ab3acc,
958
0xd2a0bf94, 0xf2c285e8, 0x9358722f, 0x330e652f,
959
0x53067f3b, 0x93577c53, 0xb34a1aac, 0xd35a4016,
960
0x13946c63, 0x93c3dbc8, 0x54000000, 0x54fff5a0,
961
0x54005860, 0x54000001, 0x54fff541, 0x54005801,
962
0x54000002, 0x54fff4e2, 0x540057a2, 0x54000002,
963
0x54fff482, 0x54005742, 0x54000003, 0x54fff423,
964
0x540056e3, 0x54000003, 0x54fff3c3, 0x54005683,
965
0x54000004, 0x54fff364, 0x54005624, 0x54000005,
966
0x54fff305, 0x540055c5, 0x54000006, 0x54fff2a6,
967
0x54005566, 0x54000007, 0x54fff247, 0x54005507,
968
0x54000008, 0x54fff1e8, 0x540054a8, 0x54000009,
969
0x54fff189, 0x54005449, 0x5400000a, 0x54fff12a,
970
0x540053ea, 0x5400000b, 0x54fff0cb, 0x5400538b,
971
0x5400000c, 0x54fff06c, 0x5400532c, 0x5400000d,
972
0x54fff00d, 0x540052cd, 0x5400000e, 0x54ffefae,
973
0x5400526e, 0x5400000f, 0x54ffef4f, 0x5400520f,
974
0xd40658e1, 0xd4014d22, 0xd4046543, 0xd4273f60,
975
0xd44cad80, 0xd503201f, 0xd69f03e0, 0xd6bf03e0,
976
0xd5033fdf, 0xd5033e9f, 0xd50332bf, 0xd61f0200,
977
0xd63f0280, 0xc80a7d1b, 0xc800fea1, 0xc85f7fb1,
978
0xc85fff9d, 0xc89ffee1, 0xc8dffe95, 0x88167e7b,
979
0x880bfcd0, 0x885f7c11, 0x885ffd44, 0x889ffed8,
980
0x88dffe6a, 0x48017fc5, 0x4808fe2c, 0x485f7dc9,
981
0x485ffc27, 0x489ffe05, 0x48dffd82, 0x080a7c6c,
982
0x081cff4e, 0x085f7d5e, 0x085ffeae, 0x089ffd2d,
983
0x08dfff76, 0xc87f4d7c, 0xc87fcc5e, 0xc8220417,
984
0xc82cb5f0, 0x887f55b1, 0x887ff90b, 0x88382c2d,
985
0x883aedb5, 0xf819928b, 0xb803e21c, 0x381f713b,
986
0x781ce322, 0xf850f044, 0xb85e129e, 0x385e92f1,
987
0x785ff35d, 0x39801921, 0x7881318b, 0x78dce02b,
988
0xb8829313, 0xfc45f318, 0xbc5d50af, 0xfc001375,
989
0xbc1951b7, 0xf8008c0a, 0xb801dc03, 0x38009dca,
990
0x781fdf3d, 0xf8570e0c, 0xb85faecc, 0x385f6d6d,
991
0x785ebea0, 0x38804cd7, 0x789cbce3, 0x78df9c9c,
992
0xb89eed18, 0xfc40cd6e, 0xbc5bdd93, 0xfc103c14,
993
0xbc040c08, 0xf81a2783, 0xb81ca4eb, 0x381e855b,
994
0x7801b4e6, 0xf853654d, 0xb85d74af, 0x384095a2,
995
0x785ec5bc, 0x389e15a9, 0x789dc703, 0x78c06474,
996
0xb89ff667, 0xfc57e51e, 0xbc4155f9, 0xfc05a6ee,
997
0xbc1df408, 0xf835da2a, 0xb836d9a4, 0x3833580d,
998
0x7826cb6c, 0xf8706900, 0xb87ae880, 0x3865db2e,
999
0x78714889, 0x38a7789b, 0x78beca2f, 0x78f6c810,
1000
0xb8bef956, 0xfc6afabd, 0xbc734963, 0xfc3d5b8d,
1001
0xbc25fbb7, 0xf9189d05, 0xb91ecb1d, 0x39187a33,
1002
0x791f226d, 0xf95aa2f3, 0xb9587bb7, 0x395f7176,
1003
0x795d9143, 0x399e7e08, 0x799a2697, 0x79df3422,
1004
0xb99c2624, 0xfd5c2374, 0xbd5fa1d9, 0xfd1d595a,
1005
0xbd1b1869, 0x5800425b, 0x1800000b, 0xf8945060,
1006
0xd8000000, 0xf8ae6ba0, 0xf99a0080, 0x1a070035,
1007
0x3a0700a8, 0x5a0e0367, 0x7a11009b, 0x9a000380,
1008
0xba1e030c, 0xda0f0320, 0xfa030301, 0x0b340b11,
1009
0x2b2a278d, 0xcb22aa0f, 0x6b2d29bd, 0x8b2cce8c,
1010
0xab2b877e, 0xcb21c8ee, 0xeb3ba47d, 0x3a4d400e,
1011
0x7a5132c6, 0xba5e622e, 0xfa53814c, 0x3a52d8c2,
1012
0x7a4d8924, 0xba4b3aab, 0xfa4d7882, 0x1a96804c,
1013
0x1a912618, 0x5a90b0e6, 0x5a96976b, 0x9a9db06a,
1014
0x9a9b374c, 0xda95c14f, 0xda89c6fe, 0x5ac0015e,
1015
0x5ac005fd, 0x5ac00bdd, 0x5ac012b9, 0x5ac01404,
1016
0xdac002b1, 0xdac0061d, 0xdac00a95, 0xdac00e66,
1017
0xdac0107e, 0xdac01675, 0x1ac00b0b, 0x1ace0f3b,
1018
0x1ad121c3, 0x1ad825e7, 0x1ad92a3c, 0x1adc2f42,
1019
0x9ada0b25, 0x9ad10e1b, 0x9acc22a6, 0x9acc2480,
1020
0x9adc2a3b, 0x9ad12c5c, 0x9bce7dea, 0x9b597c6e,
1021
0x1b0e166f, 0x1b1ae490, 0x9b023044, 0x9b089e3d,
1022
0x9b391083, 0x9b24c73a, 0x9bb15f40, 0x9bbcc6af,
1023
0x7ea3d55b, 0x1e3908e0, 0x1e2f18c9, 0x1e2a29fd,
1024
0x1e273a22, 0x7ef7d56b, 0x1e770ba7, 0x1e6b1b6e,
1025
0x1e78288b, 0x1e6e39ec, 0x1f1c3574, 0x1f17f98b,
1026
0x1f2935da, 0x1f2574ea, 0x1f4b306f, 0x1f5ec7cf,
1027
0x1f6f3e93, 0x1f6226a9, 0x1e2040fb, 0x1e20c3dd,
1028
0x1e214031, 0x1e21c0c2, 0x1e22c06a, 0x1e604178,
1029
0x1e60c027, 0x1e61400b, 0x1e61c223, 0x1e6240dc,
1030
0x1e3800d6, 0x9e380360, 0x1e78005a, 0x9e7800e5,
1031
0x1e22017c, 0x9e2201b9, 0x1e6202eb, 0x9e620113,
1032
0x1e2602b1, 0x9e660299, 0x1e270233, 0x9e6703a2,
1033
0x1e2822c0, 0x1e7322a0, 0x1e202288, 0x1e602168,
1034
0x293c19f4, 0x2966387b, 0x69762970, 0xa9041dc7,
1035
0xa9475c0c, 0x29b61ccd, 0x29ee3c5e, 0x69ee0764,
1036
0xa9843977, 0xa9f46ebd, 0x28ba16b6, 0x28fc44db,
1037
0x68f61430, 0xa8b352cd, 0xa8c56d5e, 0x28024565,
1038
0x2874134e, 0xa8027597, 0xa87b1aa0, 0x0c40734f,
1039
0x4cdfa177, 0x0cc76ee8, 0x4cdf2733, 0x0d40c23d,
1040
0x4ddfcaf8, 0x0dd9ccaa, 0x4c408d51, 0x0cdf85ec,
1041
0x4d60c239, 0x0dffcbc1, 0x4de9ce30, 0x4cc24999,
1042
0x0c404a7a, 0x4d40e6af, 0x4ddfe9b9, 0x0dddef8e,
1043
0x4cdf07b1, 0x0cc000fb, 0x0d60e238, 0x0dffe740,
1044
0x0de2eb2c, 0x0e31baf6, 0x4e31bb9b, 0x0e71b8a4,
1045
0x4e71b907, 0x4eb1b8e6, 0x0e30a841, 0x4e30ab7a,
1046
0x0e70aa0f, 0x4e70a862, 0x4eb0a9cd, 0x6e30f9cd,
1047
0x0e31ab38, 0x2e31ab17, 0x4e31a8a4, 0x6e31aa93,
1048
0x0e71aa0f, 0x2e71a820, 0x4e71a8a4, 0x6e71aab4,
1049
0x4eb1a98b, 0x6eb1abdd, 0x6eb0fa0f, 0x7e30fad5,
1050
0x7e70f8a4, 0x7eb0f9ee, 0x7ef0faf6, 0x0e20bb59,
1051
0x4e20b8e6, 0x0e60b9ac, 0x4e60b9ee, 0x0ea0b9cd,
1052
0x4ea0b9ee, 0x4ee0b949, 0x0ea0fb59, 0x4ea0fbbc,
1053
0x4ee0f96a, 0x2ea0fa93, 0x6ea0f98b, 0x6ee0fa51,
1054
0x2ea1fad5, 0x6ea1fa0f, 0x6ee1fab4, 0x2e205b17,
1055
0x6e205b7a, 0x0e271cc5, 0x4e281ce6, 0x0eb11e0f,
1056
0x4eb11e0f, 0x2e3b1f59, 0x6e321e30, 0x0e3d879b,
1057
0x4e3a8738, 0x0e71860f, 0x4e7b8759, 0x0eb085ee,
1058
0x4eac856a, 0x4eef85cd, 0x0e30d5ee, 0x4e36d6b4,
1059
0x4e63d441, 0x2e3886f6, 0x6e2087fe, 0x2e7085ee,
1060
0x6e648462, 0x2ea884e6, 0x6ea58483, 0x6ee98507,
1061
0x0ebad738, 0x4ea2d420, 0x4efdd79b, 0x0e3f9fdd,
1062
0x4e279cc5, 0x0e679cc5, 0x4e7f9fdd, 0x0ead9d8b,
1063
0x4ebb9f59, 0x2ea2d420, 0x6ea0d7fe, 0x6ee2d420,
1064
0x2e33de51, 0x6e3edfbc, 0x6e7bdf59, 0x0e6b9549,
1065
0x4e7b9759, 0x0eae95ac, 0x4eb1960f, 0x0e2dcd8b,
1066
0x4e2ccd6a, 0x4e73ce51, 0x2e7a9738, 0x6e7796d5,
1067
0x2eb99717, 0x6ea29420, 0x0eb2ce30, 0x4eaccd6a,
1068
0x4ee8cce6, 0x2e3effbc, 0x6e28fce6, 0x6e67fcc5,
1069
0x0e2764c5, 0x4e3666b4, 0x0e736651, 0x4e71660f,
1070
0x0eb36651, 0x4ebf67dd, 0x0e3ca77a, 0x4e3ea7bc,
1071
0x0e63a441, 0x4e7da79b, 0x0ea2a420, 0x4eb6a6b4,
1072
0x0e3ef7bc, 0x4e31f60f, 0x4e6ef5ac, 0x0e2c6d6a,
1073
0x4e3e6fbc, 0x0e7e6fbc, 0x4e756e93, 0x0eb86ef6,
1074
0x4eac6d6a, 0x0e26aca4, 0x4e20affe, 0x0e76aeb4,
1075
0x4e6aad28, 0x0ea0affe, 0x4eb3ae51, 0x0eacf56a,
1076
0x4ebdf79b, 0x4ee4f462, 0x2e3a8f38, 0x6e268ca4,
1077
0x2e658c83, 0x6e6a8d28, 0x2eb88ef6, 0x6eb38e51,
1078
0x6eef8dcd, 0x0e26e4a4, 0x4e3ee7bc, 0x4e79e717,
1079
0x0e3736d5, 0x4e3b3759, 0x0e7a3738, 0x4e653483,
1080
0x0eb93717, 0x4ebc377a, 0x4ef93717, 0x2eb0e5ee,
1081
0x6eb7e6d5, 0x6ee5e483, 0x0e393f17, 0x4e2a3d28,
1082
0x0e7a3f38, 0x4e753e93, 0x0eb13e0f, 0x4eb23e30,
1083
0x4ee43c62, 0x2e23e441, 0x6e22e420, 0x6e7ae738,
1084
0xba5fd3e3, 0x3a5f03e5, 0xfa411be4, 0x7a42cbe2,
1085
0x93df03ff, 0xc820ffff, 0x8822fc7f, 0xc8247cbf,
1086
0x88267fff, 0x4e010fe0, 0x4e081fe1, 0x4e0c1fe1,
1087
0x4e0a1fe1, 0x4e071fe1, 0x4e042c20, 0x4e062c20,
1088
0x4e052c20, 0x4e083c20, 0x0e0c3c20, 0x0e0a3c20,
1089
0x0e073c20, 0x4cc0ac3f, 0x05a08020, 0x04b0e3e0,
1090
0x0470e7e1, 0x042f9c20, 0x043f9c35, 0x047f9c20,
1091
0x04ff9c20, 0x04299420, 0x04319160, 0x0461943e,
1092
0x04a19020, 0x042053ff, 0x047f5401, 0x25208028,
1093
0x2538cfe0, 0x2578d001, 0x25b8efe2, 0x25f8f007,
1094
0xa400a3e0, 0xa4a8a7ea, 0xa547a814, 0xa4084ffe,
1095
0xa55c53e0, 0xa5e1540b, 0xe400fbf6, 0xe408ffff,
1096
0xe547e400, 0xe4014be0, 0xe4a84fe0, 0xe5f15000,
1097
0x858043e0, 0x85a043ff, 0xe59f5d08, 0x1e601000,
1098
0x1e603000, 0x1e621000, 0x1e623000, 0x1e641000,
1099
0x1e643000, 0x1e661000, 0x1e663000, 0x1e681000,
1100
0x1e683000, 0x1e6a1000, 0x1e6a3000, 0x1e6c1000,
1101
0x1e6c3000, 0x1e6e1000, 0x1e6e3000, 0x1e701000,
1102
0x1e703000, 0x1e721000, 0x1e723000, 0x1e741000,
1103
0x1e743000, 0x1e761000, 0x1e763000, 0x1e781000,
1104
0x1e783000, 0x1e7a1000, 0x1e7a3000, 0x1e7c1000,
1105
0x1e7c3000, 0x1e7e1000, 0x1e7e3000, 0xf8248183,
1106
0xf83f015c, 0xf83a1182, 0xf830203f, 0xf82d301d,
1107
0xf833522c, 0xf836438d, 0xf83e703f, 0xf83a609c,
1108
0xf8be80c4, 0xf8be01fa, 0xf8a91188, 0xf8a02034,
1109
0xf8b83002, 0xf8a95358, 0xf8b0407e, 0xf8aa7157,
1110
0xf8a46050, 0xf8eb8148, 0xf8ef0051, 0xf8ea118c,
1111
0xf8ef204d, 0xf8e73354, 0xf8f05044, 0xf8e441ec,
1112
0xf8f571f0, 0xf8eb62f5, 0xf86c82fa, 0xf87c016e,
1113
0xf8781181, 0xf87f220a, 0xf8673062, 0xf86d5233,
1114
0xf8704023, 0xf86b70be, 0xf86863af, 0xb83e8280,
1115
0xb82702f4, 0xb83c1375, 0xb8392025, 0xb83733f0,
1116
0xb825512c, 0xb83c43af, 0xb836727f, 0xb83f61c5,
1117
0xb8b081ff, 0xb8bb0214, 0xb8ac112b, 0xb8a6223e,
1118
0xb8bb33dc, 0xb8a7528a, 0xb8aa4304, 0xb8b172d1,
1119
0xb8a361fd, 0xb8f68273, 0xb8f601e2, 0xb8e6120c,
1120
0xb8eb22ed, 0xb8e1327e, 0xb8e55051, 0xb8f041b6,
1121
0xb8ea73b5, 0xb8fb636c, 0xb86383e1, 0xb8780233,
1122
0xb869137c, 0xb86f22a7, 0xb877333f, 0xb862537f,
1123
0xb87042ea, 0xb87371e3, 0xb8606359, 0xce313056,
1124
0xce1d7363, 0xce668f50, 0xce913b89, 0xce6f80e4,
1125
0xce6886c9, 0xcec08362, 0xce658bd4, 0x0470001a,
1126
0x04e80723, 0x65da0355, 0x65840816, 0x65830411,
1127
0x0416a8c1, 0x04801ce9, 0x045094b6, 0x041ab3c8,
1128
0x04d38171, 0x0491835c, 0x04d00dbc, 0x0417b8b0,
1129
0x045ea9ed, 0x0408157a, 0x040a1096, 0x04411233,
1130
0x04dcac4e, 0x658096e3, 0x658d8626, 0x6586921b,
1131
0x65879c62, 0x65829266, 0x04ddb50c, 0x6582b013,
1132
0x65c0a677, 0x6581b0cd, 0x65cdae27, 0x65c18ac8,
1133
0x65a31c56, 0x65e434f1, 0x65f04107, 0x65e965f6,
1134
0x049e58ab, 0x0441756d, 0x04303288, 0x04a4308f,
1135
0x047d30c8, 0x04fd321c, 0x045a2c49, 0x041820fc,
1136
0x0459363a, 0x04c832a8, 0x048a36a5, 0x65c733b6,
1137
0x65c62093, 0x65982677, 0x04013a77,
1138
};
1139
// END Generated code -- do not edit
1140
1141