1 /* 2 * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. 3 * Copyright (c) 2020, Red Hat Inc. All rights reserved. 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 * 6 * This code is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 only, as 8 * published by the Free Software Foundation. 9 * 10 * This code is distributed in the hope that it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 * version 2 for more details (a copy is included in the LICENSE file that 14 * accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License version 17 * 2 along with this work; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 * 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 * or visit www.oracle.com if you need additional information or have any 22 * questions. 23 */ 24 25 #ifdef AARCH64 26 27 #include "precompiled.hpp" 28 #include "asm/assembler.hpp" 29 #include "asm/assembler.inline.hpp" 30 #include "compiler/disassembler.hpp" 31 #include "memory/resourceArea.hpp" 32 #include "unittest.hpp" 33 34 #define __ _masm. 35 36 static void asm_check(const unsigned int *insns, const unsigned int *insns1, size_t len) { 37 bool ok = true; 38 for (unsigned int i = 0; i < len; i++) { 39 if (insns[i] != insns1[i]) { 40 ResourceMark rm; 41 stringStream ss; 42 ss.print_cr("Ours:"); 43 Disassembler::decode((address)&insns1[i], (address)&insns1[i+1], &ss); 44 ss.print_cr("Theirs:"); 45 Disassembler::decode((address)&insns[i], (address)&insns[i+1], &ss); 46 47 EXPECT_EQ(insns[i], insns1[i]) << ss.as_string(); 48 } 49 } 50 } 51 52 TEST_VM(AssemblerAArch64, validate) { 53 BufferBlob* b = BufferBlob::create("aarch64Test", 500000); 54 CodeBuffer code(b); 55 56 // { 57 // for (int i = 0; i < 256; i+=16) 58 // { 59 // printf("\"%20.20g\", ", unpack(i)); 60 // printf("\"%20.20g\", ", unpack(i+1)); 61 // } 62 // printf("\n"); 63 // } 64 65 Assembler _masm(&code); 66 address entry = __ pc(); 67 68 // Smoke test for assembler 69 70 // BEGIN Generated code -- do not edit 71 // Generated by aarch64-asmtest.py 72 Label back, forth; 73 __ bind(back); 74 75 // ArithOp 76 __ add(r26, r23, r13, Assembler::LSL, 32); // add x26, x23, x13, LSL #32 77 __ sub(r12, r24, r9, Assembler::LSR, 37); // sub x12, x24, x9, LSR #37 78 __ adds(r28, r15, r8, Assembler::ASR, 39); // adds x28, x15, x8, ASR #39 79 __ subs(r7, r28, r30, Assembler::ASR, 57); // subs x7, x28, x30, ASR #57 80 __ addw(r9, r22, r27, Assembler::ASR, 15); // add w9, w22, w27, ASR #15 81 __ subw(r3, r13, r18, Assembler::ASR, 30); // sub w3, w13, w18, ASR #30 82 __ addsw(r14, r26, r8, Assembler::ASR, 17); // adds w14, w26, w8, ASR #17 83 __ subsw(r0, r22, r12, Assembler::ASR, 21); // subs w0, w22, w12, ASR #21 84 __ andr(r0, r15, r26, Assembler::LSL, 20); // and x0, x15, x26, LSL #20 85 __ orr(r26, r5, r17, Assembler::LSL, 61); // orr x26, x5, x17, LSL #61 86 __ eor(r24, r13, r2, Assembler::LSL, 32); // eor x24, x13, x2, LSL #32 87 __ ands(r28, r3, r17, Assembler::ASR, 35); // ands x28, x3, x17, ASR #35 88 __ andw(r25, r16, r29, Assembler::LSR, 18); // and w25, w16, w29, LSR #18 89 __ orrw(r13, r18, r11, Assembler::LSR, 9); // orr w13, w18, w11, LSR #9 90 __ eorw(r5, r5, r18, Assembler::LSR, 15); // eor w5, w5, w18, LSR #15 91 __ andsw(r2, r23, r27, Assembler::ASR, 26); // ands w2, w23, w27, ASR #26 92 __ bic(r27, r28, r16, Assembler::LSR, 45); // bic x27, x28, x16, LSR #45 93 __ orn(r8, r25, r26, Assembler::ASR, 37); // orn x8, x25, x26, ASR #37 94 __ eon(r29, r17, r13, Assembler::LSR, 63); // eon x29, x17, x13, LSR #63 95 __ bics(r28, r24, r2, Assembler::LSR, 31); // bics x28, x24, x2, LSR #31 96 __ bicw(r19, r26, r7, Assembler::ASR, 3); // bic w19, w26, w7, ASR #3 97 __ ornw(r6, r24, r10, Assembler::ASR, 3); // orn w6, w24, w10, ASR #3 98 __ eonw(r4, r21, r1, Assembler::LSR, 29); // eon w4, w21, w1, LSR #29 99 __ bicsw(r16, r21, r0, Assembler::LSR, 19); // bics w16, w21, w0, LSR #19 100 101 // AddSubImmOp 102 __ addw(r17, r12, 379u); // add w17, w12, #379 103 __ addsw(r30, r1, 22u); // adds w30, w1, #22 104 __ subw(r29, r5, 126u); // sub w29, w5, #126 105 __ subsw(r6, r24, 960u); // subs w6, w24, #960 106 __ add(r0, r13, 104u); // add x0, x13, #104 107 __ adds(r8, r6, 663u); // adds x8, x6, #663 108 __ sub(r10, r5, 516u); // sub x10, x5, #516 109 __ subs(r1, r3, 1012u); // subs x1, x3, #1012 110 111 // LogicalImmOp 112 __ andw(r6, r11, 4294049777ull); // and w6, w11, #0xfff1fff1 113 __ orrw(r28, r5, 4294966791ull); // orr w28, w5, #0xfffffe07 114 __ eorw(r1, r20, 134217216ull); // eor w1, w20, #0x7fffe00 115 __ andsw(r7, r18, 1048576ull); // ands w7, w18, #0x100000 116 __ andr(r14, r12, 9223372036854775808ull); // and x14, x12, #0x8000000000000000 117 __ orr(r9, r11, 562675075514368ull); // orr x9, x11, #0x1ffc000000000 118 __ eor(r17, r0, 18014398509481728ull); // eor x17, x0, #0x3fffffffffff00 119 __ ands(r1, r8, 18446744073705357315ull); // ands x1, x8, #0xffffffffffc00003 120 121 // AbsOp 122 __ b(__ pc()); // b . 123 __ b(back); // b back 124 __ b(forth); // b forth 125 __ bl(__ pc()); // bl . 126 __ bl(back); // bl back 127 __ bl(forth); // bl forth 128 129 // RegAndAbsOp 130 __ cbzw(r10, __ pc()); // cbz w10, . 131 __ cbzw(r10, back); // cbz w10, back 132 __ cbzw(r10, forth); // cbz w10, forth 133 __ cbnzw(r8, __ pc()); // cbnz w8, . 134 __ cbnzw(r8, back); // cbnz w8, back 135 __ cbnzw(r8, forth); // cbnz w8, forth 136 __ cbz(r11, __ pc()); // cbz x11, . 137 __ cbz(r11, back); // cbz x11, back 138 __ cbz(r11, forth); // cbz x11, forth 139 __ cbnz(r29, __ pc()); // cbnz x29, . 140 __ cbnz(r29, back); // cbnz x29, back 141 __ cbnz(r29, forth); // cbnz x29, forth 142 __ adr(r19, __ pc()); // adr x19, . 143 __ adr(r19, back); // adr x19, back 144 __ adr(r19, forth); // adr x19, forth 145 __ _adrp(r19, __ pc()); // adrp x19, . 146 147 // RegImmAbsOp 148 __ tbz(r22, 6, __ pc()); // tbz x22, #6, . 149 __ tbz(r22, 6, back); // tbz x22, #6, back 150 __ tbz(r22, 6, forth); // tbz x22, #6, forth 151 __ tbnz(r12, 11, __ pc()); // tbnz x12, #11, . 152 __ tbnz(r12, 11, back); // tbnz x12, #11, back 153 __ tbnz(r12, 11, forth); // tbnz x12, #11, forth 154 155 // MoveWideImmOp 156 __ movnw(r0, 6301, 0); // movn w0, #6301, lsl 0 157 __ movzw(r7, 20886, 0); // movz w7, #20886, lsl 0 158 __ movkw(r27, 18617, 0); // movk w27, #18617, lsl 0 159 __ movn(r12, 22998, 16); // movn x12, #22998, lsl 16 160 __ movz(r20, 1532, 16); // movz x20, #1532, lsl 16 161 __ movk(r8, 5167, 32); // movk x8, #5167, lsl 32 162 163 // BitfieldOp 164 __ sbfm(r15, r17, 24, 28); // sbfm x15, x17, #24, #28 165 __ bfmw(r15, r9, 14, 25); // bfm w15, w9, #14, #25 166 __ ubfmw(r27, r25, 6, 31); // ubfm w27, w25, #6, #31 167 __ sbfm(r19, r2, 23, 31); // sbfm x19, x2, #23, #31 168 __ bfm(r12, r21, 10, 6); // bfm x12, x21, #10, #6 169 __ ubfm(r22, r0, 26, 16); // ubfm x22, x0, #26, #16 170 171 // ExtractOp 172 __ extrw(r3, r3, r20, 27); // extr w3, w3, w20, #27 173 __ extr(r8, r30, r3, 54); // extr x8, x30, x3, #54 174 175 // CondBranchOp 176 __ br(Assembler::EQ, __ pc()); // b.EQ . 177 __ br(Assembler::EQ, back); // b.EQ back 178 __ br(Assembler::EQ, forth); // b.EQ forth 179 __ br(Assembler::NE, __ pc()); // b.NE . 180 __ br(Assembler::NE, back); // b.NE back 181 __ br(Assembler::NE, forth); // b.NE forth 182 __ br(Assembler::HS, __ pc()); // b.HS . 183 __ br(Assembler::HS, back); // b.HS back 184 __ br(Assembler::HS, forth); // b.HS forth 185 __ br(Assembler::CS, __ pc()); // b.CS . 186 __ br(Assembler::CS, back); // b.CS back 187 __ br(Assembler::CS, forth); // b.CS forth 188 __ br(Assembler::LO, __ pc()); // b.LO . 189 __ br(Assembler::LO, back); // b.LO back 190 __ br(Assembler::LO, forth); // b.LO forth 191 __ br(Assembler::CC, __ pc()); // b.CC . 192 __ br(Assembler::CC, back); // b.CC back 193 __ br(Assembler::CC, forth); // b.CC forth 194 __ br(Assembler::MI, __ pc()); // b.MI . 195 __ br(Assembler::MI, back); // b.MI back 196 __ br(Assembler::MI, forth); // b.MI forth 197 __ br(Assembler::PL, __ pc()); // b.PL . 198 __ br(Assembler::PL, back); // b.PL back 199 __ br(Assembler::PL, forth); // b.PL forth 200 __ br(Assembler::VS, __ pc()); // b.VS . 201 __ br(Assembler::VS, back); // b.VS back 202 __ br(Assembler::VS, forth); // b.VS forth 203 __ br(Assembler::VC, __ pc()); // b.VC . 204 __ br(Assembler::VC, back); // b.VC back 205 __ br(Assembler::VC, forth); // b.VC forth 206 __ br(Assembler::HI, __ pc()); // b.HI . 207 __ br(Assembler::HI, back); // b.HI back 208 __ br(Assembler::HI, forth); // b.HI forth 209 __ br(Assembler::LS, __ pc()); // b.LS . 210 __ br(Assembler::LS, back); // b.LS back 211 __ br(Assembler::LS, forth); // b.LS forth 212 __ br(Assembler::GE, __ pc()); // b.GE . 213 __ br(Assembler::GE, back); // b.GE back 214 __ br(Assembler::GE, forth); // b.GE forth 215 __ br(Assembler::LT, __ pc()); // b.LT . 216 __ br(Assembler::LT, back); // b.LT back 217 __ br(Assembler::LT, forth); // b.LT forth 218 __ br(Assembler::GT, __ pc()); // b.GT . 219 __ br(Assembler::GT, back); // b.GT back 220 __ br(Assembler::GT, forth); // b.GT forth 221 __ br(Assembler::LE, __ pc()); // b.LE . 222 __ br(Assembler::LE, back); // b.LE back 223 __ br(Assembler::LE, forth); // b.LE forth 224 __ br(Assembler::AL, __ pc()); // b.AL . 225 __ br(Assembler::AL, back); // b.AL back 226 __ br(Assembler::AL, forth); // b.AL forth 227 __ br(Assembler::NV, __ pc()); // b.NV . 228 __ br(Assembler::NV, back); // b.NV back 229 __ br(Assembler::NV, forth); // b.NV forth 230 231 // ImmOp 232 __ svc(12999); // svc #12999 233 __ hvc(2665); // hvc #2665 234 __ smc(9002); // smc #9002 235 __ brk(14843); // brk #14843 236 __ hlt(25964); // hlt #25964 237 238 // Op 239 __ nop(); // nop 240 __ eret(); // eret 241 __ drps(); // drps 242 __ isb(); // isb 243 244 // SystemOp 245 __ dsb(Assembler::ST); // dsb ST 246 __ dmb(Assembler::OSHST); // dmb OSHST 247 248 // OneRegOp 249 __ br(r16); // br x16 250 __ blr(r20); // blr x20 251 252 // LoadStoreExclusiveOp 253 __ stxr(r10, r27, r8); // stxr w10, x27, [x8] 254 __ stlxr(r0, r1, r21); // stlxr w0, x1, [x21] 255 __ ldxr(r17, r29); // ldxr x17, [x29] 256 __ ldaxr(r29, r28); // ldaxr x29, [x28] 257 __ stlr(r1, r23); // stlr x1, [x23] 258 __ ldar(r21, r20); // ldar x21, [x20] 259 260 // LoadStoreExclusiveOp 261 __ stxrw(r22, r27, r19); // stxr w22, w27, [x19] 262 __ stlxrw(r11, r16, r6); // stlxr w11, w16, [x6] 263 __ ldxrw(r18, r0); // ldxr w18, [x0] 264 __ ldaxrw(r4, r10); // ldaxr w4, [x10] 265 __ stlrw(r24, r22); // stlr w24, [x22] 266 __ ldarw(r10, r19); // ldar w10, [x19] 267 268 // LoadStoreExclusiveOp 269 __ stxrh(r1, r5, r30); // stxrh w1, w5, [x30] 270 __ stlxrh(r8, r12, r17); // stlxrh w8, w12, [x17] 271 __ ldxrh(r9, r14); // ldxrh w9, [x14] 272 __ ldaxrh(r7, r1); // ldaxrh w7, [x1] 273 __ stlrh(r5, r16); // stlrh w5, [x16] 274 __ ldarh(r2, r12); // ldarh w2, [x12] 275 276 // LoadStoreExclusiveOp 277 __ stxrb(r10, r12, r3); // stxrb w10, w12, [x3] 278 __ stlxrb(r28, r14, r26); // stlxrb w28, w14, [x26] 279 __ ldxrb(r30, r10); // ldxrb w30, [x10] 280 __ ldaxrb(r14, r21); // ldaxrb w14, [x21] 281 __ stlrb(r13, r9); // stlrb w13, [x9] 282 __ ldarb(r22, r27); // ldarb w22, [x27] 283 284 // LoadStoreExclusiveOp 285 __ ldxp(r28, r19, r11); // ldxp x28, x19, [x11] 286 __ ldaxp(r30, r19, r2); // ldaxp x30, x19, [x2] 287 __ stxp(r2, r23, r1, r0); // stxp w2, x23, x1, [x0] 288 __ stlxp(r12, r16, r13, r15); // stlxp w12, x16, x13, [x15] 289 290 // LoadStoreExclusiveOp 291 __ ldxpw(r18, r21, r13); // ldxp w18, w21, [x13] 292 __ ldaxpw(r11, r30, r8); // ldaxp w11, w30, [x8] 293 __ stxpw(r24, r13, r11, r1); // stxp w24, w13, w11, [x1] 294 __ stlxpw(r26, r21, r27, r13); // stlxp w26, w21, w27, [x13] 295 296 // base_plus_unscaled_offset 297 // LoadStoreOp 298 __ str(r11, Address(r20, -103)); // str x11, [x20, -103] 299 __ strw(r28, Address(r16, 62)); // str w28, [x16, 62] 300 __ strb(r27, Address(r9, -9)); // strb w27, [x9, -9] 301 __ strh(r2, Address(r25, -50)); // strh w2, [x25, -50] 302 __ ldr(r4, Address(r2, -241)); // ldr x4, [x2, -241] 303 __ ldrw(r30, Address(r20, -31)); // ldr w30, [x20, -31] 304 __ ldrb(r18, Address(r23, -23)); // ldrb w18, [x23, -23] 305 __ ldrh(r29, Address(r26, -1)); // ldrh w29, [x26, -1] 306 __ ldrsb(r1, Address(r9, 6)); // ldrsb x1, [x9, 6] 307 __ ldrsh(r11, Address(r12, 19)); // ldrsh x11, [x12, 19] 308 __ ldrshw(r11, Address(r1, -50)); // ldrsh w11, [x1, -50] 309 __ ldrsw(r19, Address(r24, 41)); // ldrsw x19, [x24, 41] 310 __ ldrd(v24, Address(r24, 95)); // ldr d24, [x24, 95] 311 __ ldrs(v15, Address(r5, -43)); // ldr s15, [x5, -43] 312 __ strd(v21, Address(r27, 1)); // str d21, [x27, 1] 313 __ strs(v23, Address(r13, -107)); // str s23, [x13, -107] 314 315 // pre 316 // LoadStoreOp 317 __ str(r11, Address(__ pre(r0, 8))); // str x11, [x0, 8]! 318 __ strw(r3, Address(__ pre(r0, 29))); // str w3, [x0, 29]! 319 __ strb(r11, Address(__ pre(r14, 9))); // strb w11, [x14, 9]! 320 __ strh(r29, Address(__ pre(r24, -3))); // strh w29, [x24, -3]! 321 __ ldr(r13, Address(__ pre(r17, -144))); // ldr x13, [x17, -144]! 322 __ ldrw(r12, Address(__ pre(r22, -6))); // ldr w12, [x22, -6]! 323 __ ldrb(r13, Address(__ pre(r12, -10))); // ldrb w13, [x12, -10]! 324 __ ldrh(r0, Address(__ pre(r21, -21))); // ldrh w0, [x21, -21]! 325 __ ldrsb(r23, Address(__ pre(r7, 4))); // ldrsb x23, [x7, 4]! 326 __ ldrsh(r3, Address(__ pre(r7, -53))); // ldrsh x3, [x7, -53]! 327 __ ldrshw(r28, Address(__ pre(r5, -7))); // ldrsh w28, [x5, -7]! 328 __ ldrsw(r24, Address(__ pre(r9, -18))); // ldrsw x24, [x9, -18]! 329 __ ldrd(v14, Address(__ pre(r11, 12))); // ldr d14, [x11, 12]! 330 __ ldrs(v19, Address(__ pre(r12, -67))); // ldr s19, [x12, -67]! 331 __ strd(v20, Address(__ pre(r0, -253))); // str d20, [x0, -253]! 332 __ strs(v8, Address(__ pre(r0, 64))); // str s8, [x0, 64]! 333 334 // post 335 // LoadStoreOp 336 __ str(r4, Address(__ post(r28, -94))); // str x4, [x28], -94 337 __ strw(r12, Address(__ post(r7, -54))); // str w12, [x7], -54 338 __ strb(r27, Address(__ post(r10, -24))); // strb w27, [x10], -24 339 __ strh(r6, Address(__ post(r8, 27))); // strh w6, [x8], 27 340 __ ldr(r14, Address(__ post(r10, -202))); // ldr x14, [x10], -202 341 __ ldrw(r16, Address(__ post(r5, -41))); // ldr w16, [x5], -41 342 __ ldrb(r2, Address(__ post(r14, 9))); // ldrb w2, [x14], 9 343 __ ldrh(r28, Address(__ post(r13, -20))); // ldrh w28, [x13], -20 344 __ ldrsb(r9, Address(__ post(r13, -31))); // ldrsb x9, [x13], -31 345 __ ldrsh(r3, Address(__ post(r24, -36))); // ldrsh x3, [x24], -36 346 __ ldrshw(r20, Address(__ post(r3, 6))); // ldrsh w20, [x3], 6 347 __ ldrsw(r7, Address(__ post(r19, -1))); // ldrsw x7, [x19], -1 348 __ ldrd(v30, Address(__ post(r8, -130))); // ldr d30, [x8], -130 349 __ ldrs(v25, Address(__ post(r15, 21))); // ldr s25, [x15], 21 350 __ strd(v14, Address(__ post(r23, 90))); // str d14, [x23], 90 351 __ strs(v8, Address(__ post(r0, -33))); // str s8, [x0], -33 352 353 // base_plus_reg 354 // LoadStoreOp 355 __ str(r10, Address(r18, r21, Address::sxtw(3))); // str x10, [x18, w21, sxtw #3] 356 __ strw(r4, Address(r13, r22, Address::sxtw(2))); // str w4, [x13, w22, sxtw #2] 357 __ strb(r13, Address(r0, r19, Address::uxtw(0))); // strb w13, [x0, w19, uxtw #0] 358 __ strh(r12, Address(r27, r6, Address::sxtw(0))); // strh w12, [x27, w6, sxtw #0] 359 __ ldr(r0, Address(r8, r16, Address::lsl(0))); // ldr x0, [x8, x16, lsl #0] 360 __ ldrw(r0, Address(r4, r26, Address::sxtx(0))); // ldr w0, [x4, x26, sxtx #0] 361 __ ldrb(r14, Address(r25, r5, Address::sxtw(0))); // ldrb w14, [x25, w5, sxtw #0] 362 __ ldrh(r9, Address(r4, r18, Address::uxtw(0))); // ldrh w9, [x4, w18, uxtw #0] 363 __ ldrsb(r27, Address(r4, r7, Address::lsl(0))); // ldrsb x27, [x4, x7, lsl #0] 364 __ ldrsh(r15, Address(r17, r30, Address::sxtw(0))); // ldrsh x15, [x17, w30, sxtw #0] 365 __ ldrshw(r16, Address(r0, r22, Address::sxtw(0))); // ldrsh w16, [x0, w22, sxtw #0] 366 __ ldrsw(r22, Address(r10, r30, Address::sxtx(2))); // ldrsw x22, [x10, x30, sxtx #2] 367 __ ldrd(v29, Address(r21, r10, Address::sxtx(3))); // ldr d29, [x21, x10, sxtx #3] 368 __ ldrs(v3, Address(r11, r19, Address::uxtw(0))); // ldr s3, [x11, w19, uxtw #0] 369 __ strd(v13, Address(r28, r29, Address::uxtw(3))); // str d13, [x28, w29, uxtw #3] 370 __ strs(v23, Address(r29, r5, Address::sxtx(2))); // str s23, [x29, x5, sxtx #2] 371 372 // base_plus_scaled_offset 373 // LoadStoreOp 374 __ str(r5, Address(r8, 12600)); // str x5, [x8, 12600] 375 __ strw(r29, Address(r24, 7880)); // str w29, [x24, 7880] 376 __ strb(r19, Address(r17, 1566)); // strb w19, [x17, 1566] 377 __ strh(r13, Address(r19, 3984)); // strh w13, [x19, 3984] 378 __ ldr(r19, Address(r23, 13632)); // ldr x19, [x23, 13632] 379 __ ldrw(r23, Address(r29, 6264)); // ldr w23, [x29, 6264] 380 __ ldrb(r22, Address(r11, 2012)); // ldrb w22, [x11, 2012] 381 __ ldrh(r3, Address(r10, 3784)); // ldrh w3, [x10, 3784] 382 __ ldrsb(r8, Address(r16, 1951)); // ldrsb x8, [x16, 1951] 383 __ ldrsh(r23, Address(r20, 3346)); // ldrsh x23, [x20, 3346] 384 __ ldrshw(r2, Address(r1, 3994)); // ldrsh w2, [x1, 3994] 385 __ ldrsw(r4, Address(r17, 7204)); // ldrsw x4, [x17, 7204] 386 __ ldrd(v20, Address(r27, 14400)); // ldr d20, [x27, 14400] 387 __ ldrs(v25, Address(r14, 8096)); // ldr s25, [x14, 8096] 388 __ strd(v26, Address(r10, 15024)); // str d26, [x10, 15024] 389 __ strs(v9, Address(r3, 6936)); // str s9, [x3, 6936] 390 391 // pcrel 392 // LoadStoreOp 393 __ ldr(r27, forth); // ldr x27, forth 394 __ ldrw(r11, __ pc()); // ldr w11, . 395 396 // LoadStoreOp 397 __ prfm(Address(r3, -187)); // prfm PLDL1KEEP, [x3, -187] 398 399 // LoadStoreOp 400 __ prfm(__ pc()); // prfm PLDL1KEEP, . 401 402 // LoadStoreOp 403 __ prfm(Address(r29, r14, Address::lsl(0))); // prfm PLDL1KEEP, [x29, x14, lsl #0] 404 405 // LoadStoreOp 406 __ prfm(Address(r4, 13312)); // prfm PLDL1KEEP, [x4, 13312] 407 408 // AddSubCarryOp 409 __ adcw(r21, r1, r7); // adc w21, w1, w7 410 __ adcsw(r8, r5, r7); // adcs w8, w5, w7 411 __ sbcw(r7, r27, r14); // sbc w7, w27, w14 412 __ sbcsw(r27, r4, r17); // sbcs w27, w4, w17 413 __ adc(r0, r28, r0); // adc x0, x28, x0 414 __ adcs(r12, r24, r30); // adcs x12, x24, x30 415 __ sbc(r0, r25, r15); // sbc x0, x25, x15 416 __ sbcs(r1, r24, r3); // sbcs x1, x24, x3 417 418 // AddSubExtendedOp 419 __ addw(r18, r24, r20, ext::uxtb, 2); // add w18, w24, w20, uxtb #2 420 __ addsw(r13, r28, r10, ext::uxth, 1); // adds w13, w28, w10, uxth #1 421 __ sub(r15, r16, r2, ext::sxth, 2); // sub x15, x16, x2, sxth #2 422 __ subsw(r29, r13, r13, ext::uxth, 2); // subs w29, w13, w13, uxth #2 423 __ add(r12, r20, r12, ext::sxtw, 3); // add x12, x20, x12, sxtw #3 424 __ adds(r30, r27, r11, ext::sxtb, 1); // adds x30, x27, x11, sxtb #1 425 __ sub(r14, r7, r1, ext::sxtw, 2); // sub x14, x7, x1, sxtw #2 426 __ subs(r29, r3, r27, ext::sxth, 1); // subs x29, x3, x27, sxth #1 427 428 // ConditionalCompareOp 429 __ ccmnw(r0, r13, 14u, Assembler::MI); // ccmn w0, w13, #14, MI 430 __ ccmpw(r22, r18, 6u, Assembler::CC); // ccmp w22, w18, #6, CC 431 __ ccmn(r18, r30, 14u, Assembler::VS); // ccmn x18, x30, #14, VS 432 __ ccmp(r10, r19, 12u, Assembler::HI); // ccmp x10, x19, #12, HI 433 434 // ConditionalCompareImmedOp 435 __ ccmnw(r6, 18, 2, Assembler::LE); // ccmn w6, #18, #2, LE 436 __ ccmpw(r9, 13, 4, Assembler::HI); // ccmp w9, #13, #4, HI 437 __ ccmn(r21, 11, 11, Assembler::LO); // ccmn x21, #11, #11, LO 438 __ ccmp(r4, 13, 2, Assembler::VC); // ccmp x4, #13, #2, VC 439 440 // ConditionalSelectOp 441 __ cselw(r12, r2, r22, Assembler::HI); // csel w12, w2, w22, HI 442 __ csincw(r24, r16, r17, Assembler::HS); // csinc w24, w16, w17, HS 443 __ csinvw(r6, r7, r16, Assembler::LT); // csinv w6, w7, w16, LT 444 __ csnegw(r11, r27, r22, Assembler::LS); // csneg w11, w27, w22, LS 445 __ csel(r10, r3, r29, Assembler::LT); // csel x10, x3, x29, LT 446 __ csinc(r12, r26, r27, Assembler::CC); // csinc x12, x26, x27, CC 447 __ csinv(r15, r10, r21, Assembler::GT); // csinv x15, x10, x21, GT 448 __ csneg(r30, r23, r9, Assembler::GT); // csneg x30, x23, x9, GT 449 450 // TwoRegOp 451 __ rbitw(r30, r10); // rbit w30, w10 452 __ rev16w(r29, r15); // rev16 w29, w15 453 __ revw(r29, r30); // rev w29, w30 454 __ clzw(r25, r21); // clz w25, w21 455 __ clsw(r4, r0); // cls w4, w0 456 __ rbit(r18, r21); // rbit x18, x21 457 __ rev16(r29, r16); // rev16 x29, x16 458 __ rev32(r21, r20); // rev32 x21, x20 459 __ rev(r6, r19); // rev x6, x19 460 __ clz(r30, r3); // clz x30, x3 461 __ cls(r21, r19); // cls x21, x19 462 463 // ThreeRegOp 464 __ udivw(r11, r24, r0); // udiv w11, w24, w0 465 __ sdivw(r27, r25, r14); // sdiv w27, w25, w14 466 __ lslvw(r3, r14, r18); // lslv w3, w14, w18 467 __ lsrvw(r7, r15, r24); // lsrv w7, w15, w24 468 __ asrvw(r28, r17, r25); // asrv w28, w17, w25 469 __ rorvw(r2, r26, r28); // rorv w2, w26, w28 470 __ udiv(r5, r25, r26); // udiv x5, x25, x26 471 __ sdiv(r27, r16, r18); // sdiv x27, x16, x18 472 __ lslv(r6, r21, r12); // lslv x6, x21, x12 473 __ lsrv(r0, r4, r12); // lsrv x0, x4, x12 474 __ asrv(r27, r17, r28); // asrv x27, x17, x28 475 __ rorv(r28, r2, r18); // rorv x28, x2, x18 476 __ umulh(r10, r15, r14); // umulh x10, x15, x14 477 __ smulh(r14, r3, r25); // smulh x14, x3, x25 478 479 // FourRegMulOp 480 __ maddw(r15, r19, r14, r5); // madd w15, w19, w14, w5 481 __ msubw(r16, r4, r26, r25); // msub w16, w4, w26, w25 482 __ madd(r4, r2, r2, r12); // madd x4, x2, x2, x12 483 __ msub(r29, r17, r8, r7); // msub x29, x17, x8, x7 484 __ smaddl(r3, r4, r25, r4); // smaddl x3, w4, w25, x4 485 __ smsubl(r26, r25, r4, r17); // smsubl x26, w25, w4, x17 486 __ umaddl(r0, r26, r17, r23); // umaddl x0, w26, w17, x23 487 __ umsubl(r15, r21, r28, r17); // umsubl x15, w21, w28, x17 488 489 // ThreeRegFloatOp 490 __ fmuls(v27, v10, v3); // fmul s27, s10, s3 491 __ fdivs(v0, v7, v25); // fdiv s0, s7, s25 492 __ fadds(v9, v6, v15); // fadd s9, s6, s15 493 __ fsubs(v29, v15, v10); // fsub s29, s15, s10 494 __ fmuls(v2, v17, v7); // fmul s2, s17, s7 495 __ fmuld(v11, v11, v23); // fmul d11, d11, d23 496 __ fdivd(v7, v29, v23); // fdiv d7, d29, d23 497 __ faddd(v14, v27, v11); // fadd d14, d27, d11 498 __ fsubd(v11, v4, v24); // fsub d11, d4, d24 499 __ fmuld(v12, v15, v14); // fmul d12, d15, d14 500 501 // FourRegFloatOp 502 __ fmadds(v20, v11, v28, v13); // fmadd s20, s11, s28, s13 503 __ fmsubs(v11, v12, v23, v30); // fmsub s11, s12, s23, s30 504 __ fnmadds(v26, v14, v9, v13); // fnmadd s26, s14, s9, s13 505 __ fnmadds(v10, v7, v5, v29); // fnmadd s10, s7, s5, s29 506 __ fmaddd(v15, v3, v11, v12); // fmadd d15, d3, d11, d12 507 __ fmsubd(v15, v30, v30, v17); // fmsub d15, d30, d30, d17 508 __ fnmaddd(v19, v20, v15, v15); // fnmadd d19, d20, d15, d15 509 __ fnmaddd(v9, v21, v2, v9); // fnmadd d9, d21, d2, d9 510 511 // TwoRegFloatOp 512 __ fmovs(v27, v7); // fmov s27, s7 513 __ fabss(v29, v30); // fabs s29, s30 514 __ fnegs(v17, v1); // fneg s17, s1 515 __ fsqrts(v2, v6); // fsqrt s2, s6 516 __ fcvts(v10, v3); // fcvt d10, s3 517 __ fmovd(v24, v11); // fmov d24, d11 518 __ fabsd(v7, v1); // fabs d7, d1 519 __ fnegd(v11, v0); // fneg d11, d0 520 __ fsqrtd(v3, v18); // fsqrt d3, d18 521 __ fcvtd(v28, v6); // fcvt s28, d6 522 523 // FloatConvertOp 524 __ fcvtzsw(r22, v6); // fcvtzs w22, s6 525 __ fcvtzs(r0, v27); // fcvtzs x0, s27 526 __ fcvtzdw(r26, v2); // fcvtzs w26, d2 527 __ fcvtzd(r5, v7); // fcvtzs x5, d7 528 __ scvtfws(v28, r11); // scvtf s28, w11 529 __ scvtfs(v25, r13); // scvtf s25, x13 530 __ scvtfwd(v11, r23); // scvtf d11, w23 531 __ scvtfd(v19, r8); // scvtf d19, x8 532 __ fmovs(r18, v21); // fmov w18, s21 533 __ fmovd(r25, v20); // fmov x25, d20 534 __ fmovs(v19, r18); // fmov s19, w18 535 __ fmovd(v2, r29); // fmov d2, x29 536 537 // TwoRegFloatOp 538 __ fcmps(v22, v8); // fcmp s22, s8 539 __ fcmpd(v21, v19); // fcmp d21, d19 540 __ fcmps(v20, 0.0); // fcmp s20, #0.0 541 __ fcmpd(v11, 0.0); // fcmp d11, #0.0 542 543 // LoadStorePairOp 544 __ stpw(r20, r6, Address(r15, -32)); // stp w20, w6, [x15, #-32] 545 __ ldpw(r27, r14, Address(r3, -208)); // ldp w27, w14, [x3, #-208] 546 __ ldpsw(r17, r10, Address(r11, -80)); // ldpsw x17, x10, [x11, #-80] 547 __ stp(r7, r7, Address(r14, 64)); // stp x7, x7, [x14, #64] 548 __ ldp(r12, r23, Address(r0, 112)); // ldp x12, x23, [x0, #112] 549 550 // LoadStorePairOp 551 __ stpw(r13, r7, Address(__ pre(r6, -80))); // stp w13, w7, [x6, #-80]! 552 __ ldpw(r30, r16, Address(__ pre(r2, -144))); // ldp w30, w16, [x2, #-144]! 553 __ ldpsw(r4, r1, Address(__ pre(r26, -144))); // ldpsw x4, x1, [x26, #-144]! 554 __ stp(r23, r14, Address(__ pre(r11, 64))); // stp x23, x14, [x11, #64]! 555 __ ldp(r29, r27, Address(__ pre(r21, -192))); // ldp x29, x27, [x21, #-192]! 556 557 // LoadStorePairOp 558 __ stpw(r22, r5, Address(__ post(r21, -48))); // stp w22, w5, [x21], #-48 559 __ ldpw(r27, r17, Address(__ post(r6, -32))); // ldp w27, w17, [x6], #-32 560 __ ldpsw(r17, r6, Address(__ post(r1, -80))); // ldpsw x17, x6, [x1], #-80 561 __ stp(r13, r20, Address(__ post(r21, -208))); // stp x13, x20, [x21], #-208 562 __ ldp(r30, r27, Address(__ post(r10, 80))); // ldp x30, x27, [x10], #80 563 564 // LoadStorePairOp 565 __ stnpw(r5, r17, Address(r11, 16)); // stnp w5, w17, [x11, #16] 566 __ ldnpw(r14, r4, Address(r26, -96)); // ldnp w14, w4, [x26, #-96] 567 __ stnp(r23, r29, Address(r12, 32)); // stnp x23, x29, [x12, #32] 568 __ ldnp(r0, r6, Address(r21, -80)); // ldnp x0, x6, [x21, #-80] 569 570 // LdStSIMDOp 571 __ ld1(v15, __ T8B, Address(r26)); // ld1 {v15.8B}, [x26] 572 __ ld1(v23, v24, __ T16B, Address(__ post(r11, 32))); // ld1 {v23.16B, v24.16B}, [x11], 32 573 __ ld1(v8, v9, v10, __ T1D, Address(__ post(r23, r7))); // ld1 {v8.1D, v9.1D, v10.1D}, [x23], x7 574 __ ld1(v19, v20, v21, v22, __ T8H, Address(__ post(r25, 64))); // ld1 {v19.8H, v20.8H, v21.8H, v22.8H}, [x25], 64 575 __ ld1r(v29, __ T8B, Address(r17)); // ld1r {v29.8B}, [x17] 576 __ ld1r(v24, __ T4S, Address(__ post(r23, 4))); // ld1r {v24.4S}, [x23], 4 577 __ ld1r(v10, __ T1D, Address(__ post(r5, r25))); // ld1r {v10.1D}, [x5], x25 578 __ ld2(v18, v19, __ T2D, Address(r10)); // ld2 {v18.2D, v19.2D}, [x10] 579 __ ld2(v12, v13, __ T4H, Address(__ post(r15, 16))); // ld2 {v12.4H, v13.4H}, [x15], 16 580 __ ld2r(v25, v26, __ T16B, Address(r18)); // ld2r {v25.16B, v26.16B}, [x18] 581 __ ld2r(v1, v2, __ T2S, Address(__ post(r30, 8))); // ld2r {v1.2S, v2.2S}, [x30], 8 582 __ ld2r(v16, v17, __ T2D, Address(__ post(r18, r9))); // ld2r {v16.2D, v17.2D}, [x18], x9 583 __ ld3(v25, v26, v27, __ T4S, Address(__ post(r12, r2))); // ld3 {v25.4S, v26.4S, v27.4S}, [x12], x2 584 __ ld3(v26, v27, v28, __ T2S, Address(r19)); // ld3 {v26.2S, v27.2S, v28.2S}, [x19] 585 __ ld3r(v15, v16, v17, __ T8H, Address(r21)); // ld3r {v15.8H, v16.8H, v17.8H}, [x21] 586 __ ld3r(v25, v26, v27, __ T4S, Address(__ post(r13, 12))); // ld3r {v25.4S, v26.4S, v27.4S}, [x13], 12 587 __ ld3r(v14, v15, v16, __ T1D, Address(__ post(r28, r29))); // ld3r {v14.1D, v15.1D, v16.1D}, [x28], x29 588 __ ld4(v17, v18, v19, v20, __ T8H, Address(__ post(r29, 64))); // ld4 {v17.8H, v18.8H, v19.8H, v20.8H}, [x29], 64 589 __ ld4(v27, v28, v29, v30, __ T8B, Address(__ post(r7, r0))); // ld4 {v27.8B, v28.8B, v29.8B, v30.8B}, [x7], x0 590 __ ld4r(v24, v25, v26, v27, __ T8B, Address(r18)); // ld4r {v24.8B, v25.8B, v26.8B, v27.8B}, [x18] 591 __ ld4r(v0, v1, v2, v3, __ T4H, Address(__ post(r26, 8))); // ld4r {v0.4H, v1.4H, v2.4H, v3.4H}, [x26], 8 592 __ ld4r(v12, v13, v14, v15, __ T2S, Address(__ post(r25, r2))); // ld4r {v12.2S, v13.2S, v14.2S, v15.2S}, [x25], x2 593 594 // SHA512SIMDOp 595 __ sha512h(v22, __ T2D, v27, v4); // sha512h q22, q27, v4.2D 596 __ sha512h2(v7, __ T2D, v6, v1); // sha512h2 q7, q6, v1.2D 597 __ sha512su0(v26, __ T2D, v15); // sha512su0 v26.2D, v15.2D 598 __ sha512su1(v2, __ T2D, v13, v13); // sha512su1 v2.2D, v13.2D, v13.2D 599 600 // SpecialCases 601 __ ccmn(zr, zr, 3u, Assembler::LE); // ccmn xzr, xzr, #3, LE 602 __ ccmnw(zr, zr, 5u, Assembler::EQ); // ccmn wzr, wzr, #5, EQ 603 __ ccmp(zr, 1, 4u, Assembler::NE); // ccmp xzr, 1, #4, NE 604 __ ccmpw(zr, 2, 2, Assembler::GT); // ccmp wzr, 2, #2, GT 605 __ extr(zr, zr, zr, 0); // extr xzr, xzr, xzr, 0 606 __ stlxp(r0, zr, zr, sp); // stlxp w0, xzr, xzr, [sp] 607 __ stlxpw(r2, zr, zr, r3); // stlxp w2, wzr, wzr, [x3] 608 __ stxp(r4, zr, zr, r5); // stxp w4, xzr, xzr, [x5] 609 __ stxpw(r6, zr, zr, sp); // stxp w6, wzr, wzr, [sp] 610 __ dup(v0, __ T16B, zr); // dup v0.16b, wzr 611 __ mov(v1, __ T1D, 0, zr); // mov v1.d[0], xzr 612 __ mov(v1, __ T2S, 1, zr); // mov v1.s[1], wzr 613 __ mov(v1, __ T4H, 2, zr); // mov v1.h[2], wzr 614 __ mov(v1, __ T8B, 3, zr); // mov v1.b[3], wzr 615 __ ld1(v31, v0, __ T2D, Address(__ post(r1, r0))); // ld1 {v31.2d, v0.2d}, [x1], x0 616 617 // FloatImmediateOp 618 __ fmovd(v0, 2.0); // fmov d0, #2.0 619 __ fmovd(v0, 2.125); // fmov d0, #2.125 620 __ fmovd(v0, 4.0); // fmov d0, #4.0 621 __ fmovd(v0, 4.25); // fmov d0, #4.25 622 __ fmovd(v0, 8.0); // fmov d0, #8.0 623 __ fmovd(v0, 8.5); // fmov d0, #8.5 624 __ fmovd(v0, 16.0); // fmov d0, #16.0 625 __ fmovd(v0, 17.0); // fmov d0, #17.0 626 __ fmovd(v0, 0.125); // fmov d0, #0.125 627 __ fmovd(v0, 0.1328125); // fmov d0, #0.1328125 628 __ fmovd(v0, 0.25); // fmov d0, #0.25 629 __ fmovd(v0, 0.265625); // fmov d0, #0.265625 630 __ fmovd(v0, 0.5); // fmov d0, #0.5 631 __ fmovd(v0, 0.53125); // fmov d0, #0.53125 632 __ fmovd(v0, 1.0); // fmov d0, #1.0 633 __ fmovd(v0, 1.0625); // fmov d0, #1.0625 634 __ fmovd(v0, -2.0); // fmov d0, #-2.0 635 __ fmovd(v0, -2.125); // fmov d0, #-2.125 636 __ fmovd(v0, -4.0); // fmov d0, #-4.0 637 __ fmovd(v0, -4.25); // fmov d0, #-4.25 638 __ fmovd(v0, -8.0); // fmov d0, #-8.0 639 __ fmovd(v0, -8.5); // fmov d0, #-8.5 640 __ fmovd(v0, -16.0); // fmov d0, #-16.0 641 __ fmovd(v0, -17.0); // fmov d0, #-17.0 642 __ fmovd(v0, -0.125); // fmov d0, #-0.125 643 __ fmovd(v0, -0.1328125); // fmov d0, #-0.1328125 644 __ fmovd(v0, -0.25); // fmov d0, #-0.25 645 __ fmovd(v0, -0.265625); // fmov d0, #-0.265625 646 __ fmovd(v0, -0.5); // fmov d0, #-0.5 647 __ fmovd(v0, -0.53125); // fmov d0, #-0.53125 648 __ fmovd(v0, -1.0); // fmov d0, #-1.0 649 __ fmovd(v0, -1.0625); // fmov d0, #-1.0625 650 651 // LSEOp 652 __ swp(Assembler::xword, r24, r24, r4); // swp x24, x24, [x4] 653 __ ldadd(Assembler::xword, r20, r16, r0); // ldadd x20, x16, [x0] 654 __ ldbic(Assembler::xword, r4, r21, r11); // ldclr x4, x21, [x11] 655 __ ldeor(Assembler::xword, r30, r16, r22); // ldeor x30, x16, [x22] 656 __ ldorr(Assembler::xword, r4, r15, r23); // ldset x4, x15, [x23] 657 __ ldsmin(Assembler::xword, r26, r6, r12); // ldsmin x26, x6, [x12] 658 __ ldsmax(Assembler::xword, r15, r14, r15); // ldsmax x15, x14, [x15] 659 __ ldumin(Assembler::xword, r9, r25, r29); // ldumin x9, x25, [x29] 660 __ ldumax(Assembler::xword, r11, r20, r12); // ldumax x11, x20, [x12] 661 662 // LSEOp 663 __ swpa(Assembler::xword, r18, r22, r16); // swpa x18, x22, [x16] 664 __ ldadda(Assembler::xword, r21, r24, r26); // ldadda x21, x24, [x26] 665 __ ldbica(Assembler::xword, r6, r6, r16); // ldclra x6, x6, [x16] 666 __ ldeora(Assembler::xword, r16, r25, r16); // ldeora x16, x25, [x16] 667 __ ldorra(Assembler::xword, r28, r24, r16); // ldseta x28, x24, [x16] 668 __ ldsmina(Assembler::xword, r26, r15, r10); // ldsmina x26, x15, [x10] 669 __ ldsmaxa(Assembler::xword, r13, r14, r20); // ldsmaxa x13, x14, [x20] 670 __ ldumina(Assembler::xword, r1, r23, r30); // ldumina x1, x23, [x30] 671 __ ldumaxa(Assembler::xword, r14, r2, r6); // ldumaxa x14, x2, [x6] 672 673 // LSEOp 674 __ swpal(Assembler::xword, r3, r8, r25); // swpal x3, x8, [x25] 675 __ ldaddal(Assembler::xword, r0, r27, r30); // ldaddal x0, x27, [x30] 676 __ ldbical(Assembler::xword, r5, r5, r30); // ldclral x5, x5, [x30] 677 __ ldeoral(Assembler::xword, r11, r25, r0); // ldeoral x11, x25, [x0] 678 __ ldorral(Assembler::xword, zr, r0, r19); // ldsetal xzr, x0, [x19] 679 __ ldsminal(Assembler::xword, r29, r26, r9); // ldsminal x29, x26, [x9] 680 __ ldsmaxal(Assembler::xword, r26, r12, r15); // ldsmaxal x26, x12, [x15] 681 __ lduminal(Assembler::xword, r11, r11, r18); // lduminal x11, x11, [x18] 682 __ ldumaxal(Assembler::xword, r25, r22, r24); // ldumaxal x25, x22, [x24] 683 684 // LSEOp 685 __ swpl(Assembler::xword, r0, r17, r11); // swpl x0, x17, [x11] 686 __ ldaddl(Assembler::xword, r6, r29, r6); // ldaddl x6, x29, [x6] 687 __ ldbicl(Assembler::xword, r5, r5, r21); // ldclrl x5, x5, [x21] 688 __ ldeorl(Assembler::xword, r19, r16, r18); // ldeorl x19, x16, [x18] 689 __ ldorrl(Assembler::xword, r30, r27, r28); // ldsetl x30, x27, [x28] 690 __ ldsminl(Assembler::xword, r1, r28, r1); // ldsminl x1, x28, [x1] 691 __ ldsmaxl(Assembler::xword, r20, r29, r16); // ldsmaxl x20, x29, [x16] 692 __ lduminl(Assembler::xword, r13, r10, r29); // lduminl x13, x10, [x29] 693 __ ldumaxl(Assembler::xword, r29, r19, r22); // ldumaxl x29, x19, [x22] 694 695 // LSEOp 696 __ swp(Assembler::word, r10, r4, sp); // swp w10, w4, [sp] 697 __ ldadd(Assembler::word, r21, r8, sp); // ldadd w21, w8, [sp] 698 __ ldbic(Assembler::word, r19, r10, r28); // ldclr w19, w10, [x28] 699 __ ldeor(Assembler::word, r2, r25, r5); // ldeor w2, w25, [x5] 700 __ ldorr(Assembler::word, r3, r8, r22); // ldset w3, w8, [x22] 701 __ ldsmin(Assembler::word, r19, r13, r5); // ldsmin w19, w13, [x5] 702 __ ldsmax(Assembler::word, r29, r24, r21); // ldsmax w29, w24, [x21] 703 __ ldumin(Assembler::word, r26, r24, r3); // ldumin w26, w24, [x3] 704 __ ldumax(Assembler::word, r24, r26, r23); // ldumax w24, w26, [x23] 705 706 // LSEOp 707 __ swpa(Assembler::word, r15, r21, r3); // swpa w15, w21, [x3] 708 __ ldadda(Assembler::word, r24, r8, r25); // ldadda w24, w8, [x25] 709 __ ldbica(Assembler::word, r20, r16, r17); // ldclra w20, w16, [x17] 710 __ ldeora(Assembler::word, r2, r1, r0); // ldeora w2, w1, [x0] 711 __ ldorra(Assembler::word, r24, r4, r3); // ldseta w24, w4, [x3] 712 __ ldsmina(Assembler::word, r12, zr, r28); // ldsmina w12, wzr, [x28] 713 __ ldsmaxa(Assembler::word, r10, r26, r2); // ldsmaxa w10, w26, [x2] 714 __ ldumina(Assembler::word, r12, r18, sp); // ldumina w12, w18, [sp] 715 __ ldumaxa(Assembler::word, r1, r13, r29); // ldumaxa w1, w13, [x29] 716 717 // LSEOp 718 __ swpal(Assembler::word, r0, r19, r12); // swpal w0, w19, [x12] 719 __ ldaddal(Assembler::word, r17, r22, r13); // ldaddal w17, w22, [x13] 720 __ ldbical(Assembler::word, r28, r30, sp); // ldclral w28, w30, [sp] 721 __ ldeoral(Assembler::word, r1, r26, r28); // ldeoral w1, w26, [x28] 722 __ ldorral(Assembler::word, r4, r30, r4); // ldsetal w4, w30, [x4] 723 __ ldsminal(Assembler::word, r6, r30, r26); // ldsminal w6, w30, [x26] 724 __ ldsmaxal(Assembler::word, r18, r9, r8); // ldsmaxal w18, w9, [x8] 725 __ lduminal(Assembler::word, r12, r0, r20); // lduminal w12, w0, [x20] 726 __ ldumaxal(Assembler::word, r1, r24, r2); // ldumaxal w1, w24, [x2] 727 728 // LSEOp 729 __ swpl(Assembler::word, r0, r9, r24); // swpl w0, w9, [x24] 730 __ ldaddl(Assembler::word, r26, r16, r30); // ldaddl w26, w16, [x30] 731 __ ldbicl(Assembler::word, r3, r10, r23); // ldclrl w3, w10, [x23] 732 __ ldeorl(Assembler::word, r10, r4, r18); // ldeorl w10, w4, [x18] 733 __ ldorrl(Assembler::word, r2, r11, r8); // ldsetl w2, w11, [x8] 734 __ ldsminl(Assembler::word, r10, r15, r17); // ldsminl w10, w15, [x17] 735 __ ldsmaxl(Assembler::word, r2, r10, r12); // ldsmaxl w2, w10, [x12] 736 __ lduminl(Assembler::word, r12, r15, r13); // lduminl w12, w15, [x13] 737 __ ldumaxl(Assembler::word, r2, r7, r20); // ldumaxl w2, w7, [x20] 738 739 __ bind(forth); 740 741 /* 742 aarch64ops.o: file format elf64-littleaarch64 743 744 745 Disassembly of section .text: 746 747 0000000000000000 <back>: 748 0: 8b0d82fa add x26, x23, x13, lsl #32 749 4: cb49970c sub x12, x24, x9, lsr #37 750 8: ab889dfc adds x28, x15, x8, asr #39 751 c: eb9ee787 subs x7, x28, x30, asr #57 752 10: 0b9b3ec9 add w9, w22, w27, asr #15 753 14: 4b9279a3 sub w3, w13, w18, asr #30 754 18: 2b88474e adds w14, w26, w8, asr #17 755 1c: 6b8c56c0 subs w0, w22, w12, asr #21 756 20: 8a1a51e0 and x0, x15, x26, lsl #20 757 24: aa11f4ba orr x26, x5, x17, lsl #61 758 28: ca0281b8 eor x24, x13, x2, lsl #32 759 2c: ea918c7c ands x28, x3, x17, asr #35 760 30: 0a5d4a19 and w25, w16, w29, lsr #18 761 34: 2a4b264d orr w13, w18, w11, lsr #9 762 38: 4a523ca5 eor w5, w5, w18, lsr #15 763 3c: 6a9b6ae2 ands w2, w23, w27, asr #26 764 40: 8a70b79b bic x27, x28, x16, lsr #45 765 44: aaba9728 orn x8, x25, x26, asr #37 766 48: ca6dfe3d eon x29, x17, x13, lsr #63 767 4c: ea627f1c bics x28, x24, x2, lsr #31 768 50: 0aa70f53 bic w19, w26, w7, asr #3 769 54: 2aaa0f06 orn w6, w24, w10, asr #3 770 58: 4a6176a4 eon w4, w21, w1, lsr #29 771 5c: 6a604eb0 bics w16, w21, w0, lsr #19 772 60: 1105ed91 add w17, w12, #0x17b 773 64: 3100583e adds w30, w1, #0x16 774 68: 5101f8bd sub w29, w5, #0x7e 775 6c: 710f0306 subs w6, w24, #0x3c0 776 70: 9101a1a0 add x0, x13, #0x68 777 74: b10a5cc8 adds x8, x6, #0x297 778 78: d10810aa sub x10, x5, #0x204 779 7c: f10fd061 subs x1, x3, #0x3f4 780 80: 120cb166 and w6, w11, #0xfff1fff1 781 84: 321764bc orr w28, w5, #0xfffffe07 782 88: 52174681 eor w1, w20, #0x7fffe00 783 8c: 720c0247 ands w7, w18, #0x100000 784 90: 9241018e and x14, x12, #0x8000000000000000 785 94: b25a2969 orr x9, x11, #0x1ffc000000000 786 98: d278b411 eor x17, x0, #0x3fffffffffff00 787 9c: f26aad01 ands x1, x8, #0xffffffffffc00003 788 a0: 14000000 b a0 <back+0xa0> 789 a4: 17ffffd7 b 0 <back> 790 a8: 140001f2 b 870 <forth> 791 ac: 94000000 bl ac <back+0xac> 792 b0: 97ffffd4 bl 0 <back> 793 b4: 940001ef bl 870 <forth> 794 b8: 3400000a cbz w10, b8 <back+0xb8> 795 bc: 34fffa2a cbz w10, 0 <back> 796 c0: 34003d8a cbz w10, 870 <forth> 797 c4: 35000008 cbnz w8, c4 <back+0xc4> 798 c8: 35fff9c8 cbnz w8, 0 <back> 799 cc: 35003d28 cbnz w8, 870 <forth> 800 d0: b400000b cbz x11, d0 <back+0xd0> 801 d4: b4fff96b cbz x11, 0 <back> 802 d8: b4003ccb cbz x11, 870 <forth> 803 dc: b500001d cbnz x29, dc <back+0xdc> 804 e0: b5fff91d cbnz x29, 0 <back> 805 e4: b5003c7d cbnz x29, 870 <forth> 806 e8: 10000013 adr x19, e8 <back+0xe8> 807 ec: 10fff8b3 adr x19, 0 <back> 808 f0: 10003c13 adr x19, 870 <forth> 809 f4: 90000013 adrp x19, 0 <back> 810 f8: 36300016 tbz w22, #6, f8 <back+0xf8> 811 fc: 3637f836 tbz w22, #6, 0 <back> 812 100: 36303b96 tbz w22, #6, 870 <forth> 813 104: 3758000c tbnz w12, #11, 104 <back+0x104> 814 108: 375ff7cc tbnz w12, #11, 0 <back> 815 10c: 37583b2c tbnz w12, #11, 870 <forth> 816 110: 128313a0 mov w0, #0xffffe762 // #-6302 817 114: 528a32c7 mov w7, #0x5196 // #20886 818 118: 7289173b movk w27, #0x48b9 819 11c: 92ab3acc mov x12, #0xffffffffa629ffff // #-1507196929 820 120: d2a0bf94 mov x20, #0x5fc0000 // #100401152 821 124: f2c285e8 movk x8, #0x142f, lsl #32 822 128: 9358722f sbfx x15, x17, #24, #5 823 12c: 330e652f bfxil w15, w9, #14, #12 824 130: 53067f3b lsr w27, w25, #6 825 134: 93577c53 sbfx x19, x2, #23, #9 826 138: b34a1aac bfi x12, x21, #54, #7 827 13c: d35a4016 ubfiz x22, x0, #38, #17 828 140: 13946c63 extr w3, w3, w20, #27 829 144: 93c3dbc8 extr x8, x30, x3, #54 830 148: 54000000 b.eq 148 <back+0x148> // b.none 831 14c: 54fff5a0 b.eq 0 <back> // b.none 832 150: 54003900 b.eq 870 <forth> // b.none 833 154: 54000001 b.ne 154 <back+0x154> // b.any 834 158: 54fff541 b.ne 0 <back> // b.any 835 15c: 540038a1 b.ne 870 <forth> // b.any 836 160: 54000002 b.cs 160 <back+0x160> // b.hs, b.nlast 837 164: 54fff4e2 b.cs 0 <back> // b.hs, b.nlast 838 168: 54003842 b.cs 870 <forth> // b.hs, b.nlast 839 16c: 54000002 b.cs 16c <back+0x16c> // b.hs, b.nlast 840 170: 54fff482 b.cs 0 <back> // b.hs, b.nlast 841 174: 540037e2 b.cs 870 <forth> // b.hs, b.nlast 842 178: 54000003 b.cc 178 <back+0x178> // b.lo, b.ul, b.last 843 17c: 54fff423 b.cc 0 <back> // b.lo, b.ul, b.last 844 180: 54003783 b.cc 870 <forth> // b.lo, b.ul, b.last 845 184: 54000003 b.cc 184 <back+0x184> // b.lo, b.ul, b.last 846 188: 54fff3c3 b.cc 0 <back> // b.lo, b.ul, b.last 847 18c: 54003723 b.cc 870 <forth> // b.lo, b.ul, b.last 848 190: 54000004 b.mi 190 <back+0x190> // b.first 849 194: 54fff364 b.mi 0 <back> // b.first 850 198: 540036c4 b.mi 870 <forth> // b.first 851 19c: 54000005 b.pl 19c <back+0x19c> // b.nfrst 852 1a0: 54fff305 b.pl 0 <back> // b.nfrst 853 1a4: 54003665 b.pl 870 <forth> // b.nfrst 854 1a8: 54000006 b.vs 1a8 <back+0x1a8> 855 1ac: 54fff2a6 b.vs 0 <back> 856 1b0: 54003606 b.vs 870 <forth> 857 1b4: 54000007 b.vc 1b4 <back+0x1b4> 858 1b8: 54fff247 b.vc 0 <back> 859 1bc: 540035a7 b.vc 870 <forth> 860 1c0: 54000008 b.hi 1c0 <back+0x1c0> // b.pmore 861 1c4: 54fff1e8 b.hi 0 <back> // b.pmore 862 1c8: 54003548 b.hi 870 <forth> // b.pmore 863 1cc: 54000009 b.ls 1cc <back+0x1cc> // b.plast 864 1d0: 54fff189 b.ls 0 <back> // b.plast 865 1d4: 540034e9 b.ls 870 <forth> // b.plast 866 1d8: 5400000a b.ge 1d8 <back+0x1d8> // b.tcont 867 1dc: 54fff12a b.ge 0 <back> // b.tcont 868 1e0: 5400348a b.ge 870 <forth> // b.tcont 869 1e4: 5400000b b.lt 1e4 <back+0x1e4> // b.tstop 870 1e8: 54fff0cb b.lt 0 <back> // b.tstop 871 1ec: 5400342b b.lt 870 <forth> // b.tstop 872 1f0: 5400000c b.gt 1f0 <back+0x1f0> 873 1f4: 54fff06c b.gt 0 <back> 874 1f8: 540033cc b.gt 870 <forth> 875 1fc: 5400000d b.le 1fc <back+0x1fc> 876 200: 54fff00d b.le 0 <back> 877 204: 5400336d b.le 870 <forth> 878 208: 5400000e b.al 208 <back+0x208> 879 20c: 54ffefae b.al 0 <back> 880 210: 5400330e b.al 870 <forth> 881 214: 5400000f b.nv 214 <back+0x214> 882 218: 54ffef4f b.nv 0 <back> 883 21c: 540032af b.nv 870 <forth> 884 220: d40658e1 svc #0x32c7 885 224: d4014d22 hvc #0xa69 886 228: d4046543 smc #0x232a 887 22c: d4273f60 brk #0x39fb 888 230: d44cad80 hlt #0x656c 889 234: d503201f nop 890 238: d69f03e0 eret 891 23c: d6bf03e0 drps 892 240: d5033fdf isb 893 244: d5033e9f dsb st 894 248: d50332bf dmb oshst 895 24c: d61f0200 br x16 896 250: d63f0280 blr x20 897 254: c80a7d1b stxr w10, x27, [x8] 898 258: c800fea1 stlxr w0, x1, [x21] 899 25c: c85f7fb1 ldxr x17, [x29] 900 260: c85fff9d ldaxr x29, [x28] 901 264: c89ffee1 stlr x1, [x23] 902 268: c8dffe95 ldar x21, [x20] 903 26c: 88167e7b stxr w22, w27, [x19] 904 270: 880bfcd0 stlxr w11, w16, [x6] 905 274: 885f7c12 ldxr w18, [x0] 906 278: 885ffd44 ldaxr w4, [x10] 907 27c: 889ffed8 stlr w24, [x22] 908 280: 88dffe6a ldar w10, [x19] 909 284: 48017fc5 stxrh w1, w5, [x30] 910 288: 4808fe2c stlxrh w8, w12, [x17] 911 28c: 485f7dc9 ldxrh w9, [x14] 912 290: 485ffc27 ldaxrh w7, [x1] 913 294: 489ffe05 stlrh w5, [x16] 914 298: 48dffd82 ldarh w2, [x12] 915 29c: 080a7c6c stxrb w10, w12, [x3] 916 2a0: 081cff4e stlxrb w28, w14, [x26] 917 2a4: 085f7d5e ldxrb w30, [x10] 918 2a8: 085ffeae ldaxrb w14, [x21] 919 2ac: 089ffd2d stlrb w13, [x9] 920 2b0: 08dfff76 ldarb w22, [x27] 921 2b4: c87f4d7c ldxp x28, x19, [x11] 922 2b8: c87fcc5e ldaxp x30, x19, [x2] 923 2bc: c8220417 stxp w2, x23, x1, [x0] 924 2c0: c82cb5f0 stlxp w12, x16, x13, [x15] 925 2c4: 887f55b2 ldxp w18, w21, [x13] 926 2c8: 887ff90b ldaxp w11, w30, [x8] 927 2cc: 88382c2d stxp w24, w13, w11, [x1] 928 2d0: 883aedb5 stlxp w26, w21, w27, [x13] 929 2d4: f819928b stur x11, [x20, #-103] 930 2d8: b803e21c stur w28, [x16, #62] 931 2dc: 381f713b sturb w27, [x9, #-9] 932 2e0: 781ce322 sturh w2, [x25, #-50] 933 2e4: f850f044 ldur x4, [x2, #-241] 934 2e8: b85e129e ldur w30, [x20, #-31] 935 2ec: 385e92f2 ldurb w18, [x23, #-23] 936 2f0: 785ff35d ldurh w29, [x26, #-1] 937 2f4: 39801921 ldrsb x1, [x9, #6] 938 2f8: 7881318b ldursh x11, [x12, #19] 939 2fc: 78dce02b ldursh w11, [x1, #-50] 940 300: b8829313 ldursw x19, [x24, #41] 941 304: fc45f318 ldur d24, [x24, #95] 942 308: bc5d50af ldur s15, [x5, #-43] 943 30c: fc001375 stur d21, [x27, #1] 944 310: bc1951b7 stur s23, [x13, #-107] 945 314: f8008c0b str x11, [x0, #8]! 946 318: b801dc03 str w3, [x0, #29]! 947 31c: 38009dcb strb w11, [x14, #9]! 948 320: 781fdf1d strh w29, [x24, #-3]! 949 324: f8570e2d ldr x13, [x17, #-144]! 950 328: b85faecc ldr w12, [x22, #-6]! 951 32c: 385f6d8d ldrb w13, [x12, #-10]! 952 330: 785ebea0 ldrh w0, [x21, #-21]! 953 334: 38804cf7 ldrsb x23, [x7, #4]! 954 338: 789cbce3 ldrsh x3, [x7, #-53]! 955 33c: 78df9cbc ldrsh w28, [x5, #-7]! 956 340: b89eed38 ldrsw x24, [x9, #-18]! 957 344: fc40cd6e ldr d14, [x11, #12]! 958 348: bc5bdd93 ldr s19, [x12, #-67]! 959 34c: fc103c14 str d20, [x0, #-253]! 960 350: bc040c08 str s8, [x0, #64]! 961 354: f81a2784 str x4, [x28], #-94 962 358: b81ca4ec str w12, [x7], #-54 963 35c: 381e855b strb w27, [x10], #-24 964 360: 7801b506 strh w6, [x8], #27 965 364: f853654e ldr x14, [x10], #-202 966 368: b85d74b0 ldr w16, [x5], #-41 967 36c: 384095c2 ldrb w2, [x14], #9 968 370: 785ec5bc ldrh w28, [x13], #-20 969 374: 389e15a9 ldrsb x9, [x13], #-31 970 378: 789dc703 ldrsh x3, [x24], #-36 971 37c: 78c06474 ldrsh w20, [x3], #6 972 380: b89ff667 ldrsw x7, [x19], #-1 973 384: fc57e51e ldr d30, [x8], #-130 974 388: bc4155f9 ldr s25, [x15], #21 975 38c: fc05a6ee str d14, [x23], #90 976 390: bc1df408 str s8, [x0], #-33 977 394: f835da4a str x10, [x18, w21, sxtw #3] 978 398: b836d9a4 str w4, [x13, w22, sxtw #2] 979 39c: 3833580d strb w13, [x0, w19, uxtw #0] 980 3a0: 7826cb6c strh w12, [x27, w6, sxtw] 981 3a4: f8706900 ldr x0, [x8, x16] 982 3a8: b87ae880 ldr w0, [x4, x26, sxtx] 983 3ac: 3865db2e ldrb w14, [x25, w5, sxtw #0] 984 3b0: 78724889 ldrh w9, [x4, w18, uxtw] 985 3b4: 38a7789b ldrsb x27, [x4, x7, lsl #0] 986 3b8: 78beca2f ldrsh x15, [x17, w30, sxtw] 987 3bc: 78f6c810 ldrsh w16, [x0, w22, sxtw] 988 3c0: b8bef956 ldrsw x22, [x10, x30, sxtx #2] 989 3c4: fc6afabd ldr d29, [x21, x10, sxtx #3] 990 3c8: bc734963 ldr s3, [x11, w19, uxtw] 991 3cc: fc3d5b8d str d13, [x28, w29, uxtw #3] 992 3d0: bc25fbb7 str s23, [x29, x5, sxtx #2] 993 3d4: f9189d05 str x5, [x8, #12600] 994 3d8: b91ecb1d str w29, [x24, #7880] 995 3dc: 39187a33 strb w19, [x17, #1566] 996 3e0: 791f226d strh w13, [x19, #3984] 997 3e4: f95aa2f3 ldr x19, [x23, #13632] 998 3e8: b9587bb7 ldr w23, [x29, #6264] 999 3ec: 395f7176 ldrb w22, [x11, #2012] 1000 3f0: 795d9143 ldrh w3, [x10, #3784] 1001 3f4: 399e7e08 ldrsb x8, [x16, #1951] 1002 3f8: 799a2697 ldrsh x23, [x20, #3346] 1003 3fc: 79df3422 ldrsh w2, [x1, #3994] 1004 400: b99c2624 ldrsw x4, [x17, #7204] 1005 404: fd5c2374 ldr d20, [x27, #14400] 1006 408: bd5fa1d9 ldr s25, [x14, #8096] 1007 40c: fd1d595a str d26, [x10, #15024] 1008 410: bd1b1869 str s9, [x3, #6936] 1009 414: 580022fb ldr x27, 870 <forth> 1010 418: 1800000b ldr w11, 418 <back+0x418> 1011 41c: f8945060 prfum pldl1keep, [x3, #-187] 1012 420: d8000000 prfm pldl1keep, 420 <back+0x420> 1013 424: f8ae6ba0 prfm pldl1keep, [x29, x14] 1014 428: f99a0080 prfm pldl1keep, [x4, #13312] 1015 42c: 1a070035 adc w21, w1, w7 1016 430: 3a0700a8 adcs w8, w5, w7 1017 434: 5a0e0367 sbc w7, w27, w14 1018 438: 7a11009b sbcs w27, w4, w17 1019 43c: 9a000380 adc x0, x28, x0 1020 440: ba1e030c adcs x12, x24, x30 1021 444: da0f0320 sbc x0, x25, x15 1022 448: fa030301 sbcs x1, x24, x3 1023 44c: 0b340b12 add w18, w24, w20, uxtb #2 1024 450: 2b2a278d adds w13, w28, w10, uxth #1 1025 454: cb22aa0f sub x15, x16, w2, sxth #2 1026 458: 6b2d29bd subs w29, w13, w13, uxth #2 1027 45c: 8b2cce8c add x12, x20, w12, sxtw #3 1028 460: ab2b877e adds x30, x27, w11, sxtb #1 1029 464: cb21c8ee sub x14, x7, w1, sxtw #2 1030 468: eb3ba47d subs x29, x3, w27, sxth #1 1031 46c: 3a4d400e ccmn w0, w13, #0xe, mi // mi = first 1032 470: 7a5232c6 ccmp w22, w18, #0x6, cc // cc = lo, ul, last 1033 474: ba5e624e ccmn x18, x30, #0xe, vs 1034 478: fa53814c ccmp x10, x19, #0xc, hi // hi = pmore 1035 47c: 3a52d8c2 ccmn w6, #0x12, #0x2, le 1036 480: 7a4d8924 ccmp w9, #0xd, #0x4, hi // hi = pmore 1037 484: ba4b3aab ccmn x21, #0xb, #0xb, cc // cc = lo, ul, last 1038 488: fa4d7882 ccmp x4, #0xd, #0x2, vc 1039 48c: 1a96804c csel w12, w2, w22, hi // hi = pmore 1040 490: 1a912618 csinc w24, w16, w17, cs // cs = hs, nlast 1041 494: 5a90b0e6 csinv w6, w7, w16, lt // lt = tstop 1042 498: 5a96976b csneg w11, w27, w22, ls // ls = plast 1043 49c: 9a9db06a csel x10, x3, x29, lt // lt = tstop 1044 4a0: 9a9b374c csinc x12, x26, x27, cc // cc = lo, ul, last 1045 4a4: da95c14f csinv x15, x10, x21, gt 1046 4a8: da89c6fe csneg x30, x23, x9, gt 1047 4ac: 5ac0015e rbit w30, w10 1048 4b0: 5ac005fd rev16 w29, w15 1049 4b4: 5ac00bdd rev w29, w30 1050 4b8: 5ac012b9 clz w25, w21 1051 4bc: 5ac01404 cls w4, w0 1052 4c0: dac002b2 rbit x18, x21 1053 4c4: dac0061d rev16 x29, x16 1054 4c8: dac00a95 rev32 x21, x20 1055 4cc: dac00e66 rev x6, x19 1056 4d0: dac0107e clz x30, x3 1057 4d4: dac01675 cls x21, x19 1058 4d8: 1ac00b0b udiv w11, w24, w0 1059 4dc: 1ace0f3b sdiv w27, w25, w14 1060 4e0: 1ad221c3 lsl w3, w14, w18 1061 4e4: 1ad825e7 lsr w7, w15, w24 1062 4e8: 1ad92a3c asr w28, w17, w25 1063 4ec: 1adc2f42 ror w2, w26, w28 1064 4f0: 9ada0b25 udiv x5, x25, x26 1065 4f4: 9ad20e1b sdiv x27, x16, x18 1066 4f8: 9acc22a6 lsl x6, x21, x12 1067 4fc: 9acc2480 lsr x0, x4, x12 1068 500: 9adc2a3b asr x27, x17, x28 1069 504: 9ad22c5c ror x28, x2, x18 1070 508: 9bce7dea umulh x10, x15, x14 1071 50c: 9b597c6e smulh x14, x3, x25 1072 510: 1b0e166f madd w15, w19, w14, w5 1073 514: 1b1ae490 msub w16, w4, w26, w25 1074 518: 9b023044 madd x4, x2, x2, x12 1075 51c: 9b089e3d msub x29, x17, x8, x7 1076 520: 9b391083 smaddl x3, w4, w25, x4 1077 524: 9b24c73a smsubl x26, w25, w4, x17 1078 528: 9bb15f40 umaddl x0, w26, w17, x23 1079 52c: 9bbcc6af umsubl x15, w21, w28, x17 1080 530: 1e23095b fmul s27, s10, s3 1081 534: 1e3918e0 fdiv s0, s7, s25 1082 538: 1e2f28c9 fadd s9, s6, s15 1083 53c: 1e2a39fd fsub s29, s15, s10 1084 540: 1e270a22 fmul s2, s17, s7 1085 544: 1e77096b fmul d11, d11, d23 1086 548: 1e771ba7 fdiv d7, d29, d23 1087 54c: 1e6b2b6e fadd d14, d27, d11 1088 550: 1e78388b fsub d11, d4, d24 1089 554: 1e6e09ec fmul d12, d15, d14 1090 558: 1f1c3574 fmadd s20, s11, s28, s13 1091 55c: 1f17f98b fmsub s11, s12, s23, s30 1092 560: 1f2935da fnmadd s26, s14, s9, s13 1093 564: 1f2574ea fnmadd s10, s7, s5, s29 1094 568: 1f4b306f fmadd d15, d3, d11, d12 1095 56c: 1f5ec7cf fmsub d15, d30, d30, d17 1096 570: 1f6f3e93 fnmadd d19, d20, d15, d15 1097 574: 1f6226a9 fnmadd d9, d21, d2, d9 1098 578: 1e2040fb fmov s27, s7 1099 57c: 1e20c3dd fabs s29, s30 1100 580: 1e214031 fneg s17, s1 1101 584: 1e21c0c2 fsqrt s2, s6 1102 588: 1e22c06a fcvt d10, s3 1103 58c: 1e604178 fmov d24, d11 1104 590: 1e60c027 fabs d7, d1 1105 594: 1e61400b fneg d11, d0 1106 598: 1e61c243 fsqrt d3, d18 1107 59c: 1e6240dc fcvt s28, d6 1108 5a0: 1e3800d6 fcvtzs w22, s6 1109 5a4: 9e380360 fcvtzs x0, s27 1110 5a8: 1e78005a fcvtzs w26, d2 1111 5ac: 9e7800e5 fcvtzs x5, d7 1112 5b0: 1e22017c scvtf s28, w11 1113 5b4: 9e2201b9 scvtf s25, x13 1114 5b8: 1e6202eb scvtf d11, w23 1115 5bc: 9e620113 scvtf d19, x8 1116 5c0: 1e2602b2 fmov w18, s21 1117 5c4: 9e660299 fmov x25, d20 1118 5c8: 1e270253 fmov s19, w18 1119 5cc: 9e6703a2 fmov d2, x29 1120 5d0: 1e2822c0 fcmp s22, s8 1121 5d4: 1e7322a0 fcmp d21, d19 1122 5d8: 1e202288 fcmp s20, #0.0 1123 5dc: 1e602168 fcmp d11, #0.0 1124 5e0: 293c19f4 stp w20, w6, [x15, #-32] 1125 5e4: 2966387b ldp w27, w14, [x3, #-208] 1126 5e8: 69762971 ldpsw x17, x10, [x11, #-80] 1127 5ec: a9041dc7 stp x7, x7, [x14, #64] 1128 5f0: a9475c0c ldp x12, x23, [x0, #112] 1129 5f4: 29b61ccd stp w13, w7, [x6, #-80]! 1130 5f8: 29ee405e ldp w30, w16, [x2, #-144]! 1131 5fc: 69ee0744 ldpsw x4, x1, [x26, #-144]! 1132 600: a9843977 stp x23, x14, [x11, #64]! 1133 604: a9f46ebd ldp x29, x27, [x21, #-192]! 1134 608: 28ba16b6 stp w22, w5, [x21], #-48 1135 60c: 28fc44db ldp w27, w17, [x6], #-32 1136 610: 68f61831 ldpsw x17, x6, [x1], #-80 1137 614: a8b352ad stp x13, x20, [x21], #-208 1138 618: a8c56d5e ldp x30, x27, [x10], #80 1139 61c: 28024565 stnp w5, w17, [x11, #16] 1140 620: 2874134e ldnp w14, w4, [x26, #-96] 1141 624: a8027597 stnp x23, x29, [x12, #32] 1142 628: a87b1aa0 ldnp x0, x6, [x21, #-80] 1143 62c: 0c40734f ld1 {v15.8b}, [x26] 1144 630: 4cdfa177 ld1 {v23.16b, v24.16b}, [x11], #32 1145 634: 0cc76ee8 ld1 {v8.1d-v10.1d}, [x23], x7 1146 638: 4cdf2733 ld1 {v19.8h-v22.8h}, [x25], #64 1147 63c: 0d40c23d ld1r {v29.8b}, [x17] 1148 640: 4ddfcaf8 ld1r {v24.4s}, [x23], #4 1149 644: 0dd9ccaa ld1r {v10.1d}, [x5], x25 1150 648: 4c408d52 ld2 {v18.2d, v19.2d}, [x10] 1151 64c: 0cdf85ec ld2 {v12.4h, v13.4h}, [x15], #16 1152 650: 4d60c259 ld2r {v25.16b, v26.16b}, [x18] 1153 654: 0dffcbc1 ld2r {v1.2s, v2.2s}, [x30], #8 1154 658: 4de9ce50 ld2r {v16.2d, v17.2d}, [x18], x9 1155 65c: 4cc24999 ld3 {v25.4s-v27.4s}, [x12], x2 1156 660: 0c404a7a ld3 {v26.2s-v28.2s}, [x19] 1157 664: 4d40e6af ld3r {v15.8h-v17.8h}, [x21] 1158 668: 4ddfe9b9 ld3r {v25.4s-v27.4s}, [x13], #12 1159 66c: 0dddef8e ld3r {v14.1d-v16.1d}, [x28], x29 1160 670: 4cdf07b1 ld4 {v17.8h-v20.8h}, [x29], #64 1161 674: 0cc000fb ld4 {v27.8b-v30.8b}, [x7], x0 1162 678: 0d60e258 ld4r {v24.8b-v27.8b}, [x18] 1163 67c: 0dffe740 ld4r {v0.4h-v3.4h}, [x26], #8 1164 680: 0de2eb2c ld4r {v12.2s-v15.2s}, [x25], x2 1165 684: ce648376 sha512h q22, q27, v4.2d 1166 688: ce6184c7 sha512h2 q7, q6, v1.2d 1167 68c: cec081fa sha512su0 v26.2d, v15.2d 1168 690: ce6d89a2 sha512su1 v2.2d, v13.2d, v13.2d 1169 694: ba5fd3e3 ccmn xzr, xzr, #0x3, le 1170 698: 3a5f03e5 ccmn wzr, wzr, #0x5, eq // eq = none 1171 69c: fa411be4 ccmp xzr, #0x1, #0x4, ne // ne = any 1172 6a0: 7a42cbe2 ccmp wzr, #0x2, #0x2, gt 1173 6a4: 93df03ff ror xzr, xzr, #0 1174 6a8: c820ffff stlxp w0, xzr, xzr, [sp] 1175 6ac: 8822fc7f stlxp w2, wzr, wzr, [x3] 1176 6b0: c8247cbf stxp w4, xzr, xzr, [x5] 1177 6b4: 88267fff stxp w6, wzr, wzr, [sp] 1178 6b8: 4e010fe0 dup v0.16b, wzr 1179 6bc: 4e081fe1 mov v1.d[0], xzr 1180 6c0: 4e0c1fe1 mov v1.s[1], wzr 1181 6c4: 4e0a1fe1 mov v1.h[2], wzr 1182 6c8: 4e071fe1 mov v1.b[3], wzr 1183 6cc: 4cc0ac3f ld1 {v31.2d, v0.2d}, [x1], x0 1184 6d0: 1e601000 fmov d0, #2.000000000000000000e+00 1185 6d4: 1e603000 fmov d0, #2.125000000000000000e+00 1186 6d8: 1e621000 fmov d0, #4.000000000000000000e+00 1187 6dc: 1e623000 fmov d0, #4.250000000000000000e+00 1188 6e0: 1e641000 fmov d0, #8.000000000000000000e+00 1189 6e4: 1e643000 fmov d0, #8.500000000000000000e+00 1190 6e8: 1e661000 fmov d0, #1.600000000000000000e+01 1191 6ec: 1e663000 fmov d0, #1.700000000000000000e+01 1192 6f0: 1e681000 fmov d0, #1.250000000000000000e-01 1193 6f4: 1e683000 fmov d0, #1.328125000000000000e-01 1194 6f8: 1e6a1000 fmov d0, #2.500000000000000000e-01 1195 6fc: 1e6a3000 fmov d0, #2.656250000000000000e-01 1196 700: 1e6c1000 fmov d0, #5.000000000000000000e-01 1197 704: 1e6c3000 fmov d0, #5.312500000000000000e-01 1198 708: 1e6e1000 fmov d0, #1.000000000000000000e+00 1199 70c: 1e6e3000 fmov d0, #1.062500000000000000e+00 1200 710: 1e701000 fmov d0, #-2.000000000000000000e+00 1201 714: 1e703000 fmov d0, #-2.125000000000000000e+00 1202 718: 1e721000 fmov d0, #-4.000000000000000000e+00 1203 71c: 1e723000 fmov d0, #-4.250000000000000000e+00 1204 720: 1e741000 fmov d0, #-8.000000000000000000e+00 1205 724: 1e743000 fmov d0, #-8.500000000000000000e+00 1206 728: 1e761000 fmov d0, #-1.600000000000000000e+01 1207 72c: 1e763000 fmov d0, #-1.700000000000000000e+01 1208 730: 1e781000 fmov d0, #-1.250000000000000000e-01 1209 734: 1e783000 fmov d0, #-1.328125000000000000e-01 1210 738: 1e7a1000 fmov d0, #-2.500000000000000000e-01 1211 73c: 1e7a3000 fmov d0, #-2.656250000000000000e-01 1212 740: 1e7c1000 fmov d0, #-5.000000000000000000e-01 1213 744: 1e7c3000 fmov d0, #-5.312500000000000000e-01 1214 748: 1e7e1000 fmov d0, #-1.000000000000000000e+00 1215 74c: 1e7e3000 fmov d0, #-1.062500000000000000e+00 1216 750: f8388098 swp x24, x24, [x4] 1217 754: f8340010 ldadd x20, x16, [x0] 1218 758: f8241175 ldclr x4, x21, [x11] 1219 75c: f83e22d0 ldeor x30, x16, [x22] 1220 760: f82432ef ldset x4, x15, [x23] 1221 764: f83a5186 ldsmin x26, x6, [x12] 1222 768: f82f41ee ldsmax x15, x14, [x15] 1223 76c: f82973b9 ldumin x9, x25, [x29] 1224 770: f82b6194 ldumax x11, x20, [x12] 1225 774: f8b28216 swpa x18, x22, [x16] 1226 778: f8b50358 ldadda x21, x24, [x26] 1227 77c: f8a61206 ldclra x6, x6, [x16] 1228 780: f8b02219 ldeora x16, x25, [x16] 1229 784: f8bc3218 ldseta x28, x24, [x16] 1230 788: f8ba514f ldsmina x26, x15, [x10] 1231 78c: f8ad428e ldsmaxa x13, x14, [x20] 1232 790: f8a173d7 ldumina x1, x23, [x30] 1233 794: f8ae60c2 ldumaxa x14, x2, [x6] 1234 798: f8e38328 swpal x3, x8, [x25] 1235 79c: f8e003db ldaddal x0, x27, [x30] 1236 7a0: f8e513c5 ldclral x5, x5, [x30] 1237 7a4: f8eb2019 ldeoral x11, x25, [x0] 1238 7a8: f8ff3260 ldsetal xzr, x0, [x19] 1239 7ac: f8fd513a ldsminal x29, x26, [x9] 1240 7b0: f8fa41ec ldsmaxal x26, x12, [x15] 1241 7b4: f8eb724b lduminal x11, x11, [x18] 1242 7b8: f8f96316 ldumaxal x25, x22, [x24] 1243 7bc: f8608171 swpl x0, x17, [x11] 1244 7c0: f86600dd ldaddl x6, x29, [x6] 1245 7c4: f86512a5 ldclrl x5, x5, [x21] 1246 7c8: f8732250 ldeorl x19, x16, [x18] 1247 7cc: f87e339b ldsetl x30, x27, [x28] 1248 7d0: f861503c ldsminl x1, x28, [x1] 1249 7d4: f874421d ldsmaxl x20, x29, [x16] 1250 7d8: f86d73aa lduminl x13, x10, [x29] 1251 7dc: f87d62d3 ldumaxl x29, x19, [x22] 1252 7e0: b82a83e4 swp w10, w4, [sp] 1253 7e4: b83503e8 ldadd w21, w8, [sp] 1254 7e8: b833138a ldclr w19, w10, [x28] 1255 7ec: b82220b9 ldeor w2, w25, [x5] 1256 7f0: b82332c8 ldset w3, w8, [x22] 1257 7f4: b83350ad ldsmin w19, w13, [x5] 1258 7f8: b83d42b8 ldsmax w29, w24, [x21] 1259 7fc: b83a7078 ldumin w26, w24, [x3] 1260 800: b83862fa ldumax w24, w26, [x23] 1261 804: b8af8075 swpa w15, w21, [x3] 1262 808: b8b80328 ldadda w24, w8, [x25] 1263 80c: b8b41230 ldclra w20, w16, [x17] 1264 810: b8a22001 ldeora w2, w1, [x0] 1265 814: b8b83064 ldseta w24, w4, [x3] 1266 818: b8ac539f ldsmina w12, wzr, [x28] 1267 81c: b8aa405a ldsmaxa w10, w26, [x2] 1268 820: b8ac73f2 ldumina w12, w18, [sp] 1269 824: b8a163ad ldumaxa w1, w13, [x29] 1270 828: b8e08193 swpal w0, w19, [x12] 1271 82c: b8f101b6 ldaddal w17, w22, [x13] 1272 830: b8fc13fe ldclral w28, w30, [sp] 1273 834: b8e1239a ldeoral w1, w26, [x28] 1274 838: b8e4309e ldsetal w4, w30, [x4] 1275 83c: b8e6535e ldsminal w6, w30, [x26] 1276 840: b8f24109 ldsmaxal w18, w9, [x8] 1277 844: b8ec7280 lduminal w12, w0, [x20] 1278 848: b8e16058 ldumaxal w1, w24, [x2] 1279 84c: b8608309 swpl w0, w9, [x24] 1280 850: b87a03d0 ldaddl w26, w16, [x30] 1281 854: b86312ea ldclrl w3, w10, [x23] 1282 858: b86a2244 ldeorl w10, w4, [x18] 1283 85c: b862310b ldsetl w2, w11, [x8] 1284 860: b86a522f ldsminl w10, w15, [x17] 1285 864: b862418a ldsmaxl w2, w10, [x12] 1286 868: b86c71af lduminl w12, w15, [x13] 1287 86c: b8626287 ldumaxl w2, w7, [x20] 1288 */ 1289 1290 static const unsigned int insns[] = 1291 { 1292 0x8b0d82fa, 0xcb49970c, 0xab889dfc, 0xeb9ee787, 1293 0x0b9b3ec9, 0x4b9279a3, 0x2b88474e, 0x6b8c56c0, 1294 0x8a1a51e0, 0xaa11f4ba, 0xca0281b8, 0xea918c7c, 1295 0x0a5d4a19, 0x2a4b264d, 0x4a523ca5, 0x6a9b6ae2, 1296 0x8a70b79b, 0xaaba9728, 0xca6dfe3d, 0xea627f1c, 1297 0x0aa70f53, 0x2aaa0f06, 0x4a6176a4, 0x6a604eb0, 1298 0x1105ed91, 0x3100583e, 0x5101f8bd, 0x710f0306, 1299 0x9101a1a0, 0xb10a5cc8, 0xd10810aa, 0xf10fd061, 1300 0x120cb166, 0x321764bc, 0x52174681, 0x720c0247, 1301 0x9241018e, 0xb25a2969, 0xd278b411, 0xf26aad01, 1302 0x14000000, 0x17ffffd7, 0x140001f2, 0x94000000, 1303 0x97ffffd4, 0x940001ef, 0x3400000a, 0x34fffa2a, 1304 0x34003d8a, 0x35000008, 0x35fff9c8, 0x35003d28, 1305 0xb400000b, 0xb4fff96b, 0xb4003ccb, 0xb500001d, 1306 0xb5fff91d, 0xb5003c7d, 0x10000013, 0x10fff8b3, 1307 0x10003c13, 0x90000013, 0x36300016, 0x3637f836, 1308 0x36303b96, 0x3758000c, 0x375ff7cc, 0x37583b2c, 1309 0x128313a0, 0x528a32c7, 0x7289173b, 0x92ab3acc, 1310 0xd2a0bf94, 0xf2c285e8, 0x9358722f, 0x330e652f, 1311 0x53067f3b, 0x93577c53, 0xb34a1aac, 0xd35a4016, 1312 0x13946c63, 0x93c3dbc8, 0x54000000, 0x54fff5a0, 1313 0x54003900, 0x54000001, 0x54fff541, 0x540038a1, 1314 0x54000002, 0x54fff4e2, 0x54003842, 0x54000002, 1315 0x54fff482, 0x540037e2, 0x54000003, 0x54fff423, 1316 0x54003783, 0x54000003, 0x54fff3c3, 0x54003723, 1317 0x54000004, 0x54fff364, 0x540036c4, 0x54000005, 1318 0x54fff305, 0x54003665, 0x54000006, 0x54fff2a6, 1319 0x54003606, 0x54000007, 0x54fff247, 0x540035a7, 1320 0x54000008, 0x54fff1e8, 0x54003548, 0x54000009, 1321 0x54fff189, 0x540034e9, 0x5400000a, 0x54fff12a, 1322 0x5400348a, 0x5400000b, 0x54fff0cb, 0x5400342b, 1323 0x5400000c, 0x54fff06c, 0x540033cc, 0x5400000d, 1324 0x54fff00d, 0x5400336d, 0x5400000e, 0x54ffefae, 1325 0x5400330e, 0x5400000f, 0x54ffef4f, 0x540032af, 1326 0xd40658e1, 0xd4014d22, 0xd4046543, 0xd4273f60, 1327 0xd44cad80, 0xd503201f, 0xd69f03e0, 0xd6bf03e0, 1328 0xd5033fdf, 0xd5033e9f, 0xd50332bf, 0xd61f0200, 1329 0xd63f0280, 0xc80a7d1b, 0xc800fea1, 0xc85f7fb1, 1330 0xc85fff9d, 0xc89ffee1, 0xc8dffe95, 0x88167e7b, 1331 0x880bfcd0, 0x885f7c12, 0x885ffd44, 0x889ffed8, 1332 0x88dffe6a, 0x48017fc5, 0x4808fe2c, 0x485f7dc9, 1333 0x485ffc27, 0x489ffe05, 0x48dffd82, 0x080a7c6c, 1334 0x081cff4e, 0x085f7d5e, 0x085ffeae, 0x089ffd2d, 1335 0x08dfff76, 0xc87f4d7c, 0xc87fcc5e, 0xc8220417, 1336 0xc82cb5f0, 0x887f55b2, 0x887ff90b, 0x88382c2d, 1337 0x883aedb5, 0xf819928b, 0xb803e21c, 0x381f713b, 1338 0x781ce322, 0xf850f044, 0xb85e129e, 0x385e92f2, 1339 0x785ff35d, 0x39801921, 0x7881318b, 0x78dce02b, 1340 0xb8829313, 0xfc45f318, 0xbc5d50af, 0xfc001375, 1341 0xbc1951b7, 0xf8008c0b, 0xb801dc03, 0x38009dcb, 1342 0x781fdf1d, 0xf8570e2d, 0xb85faecc, 0x385f6d8d, 1343 0x785ebea0, 0x38804cf7, 0x789cbce3, 0x78df9cbc, 1344 0xb89eed38, 0xfc40cd6e, 0xbc5bdd93, 0xfc103c14, 1345 0xbc040c08, 0xf81a2784, 0xb81ca4ec, 0x381e855b, 1346 0x7801b506, 0xf853654e, 0xb85d74b0, 0x384095c2, 1347 0x785ec5bc, 0x389e15a9, 0x789dc703, 0x78c06474, 1348 0xb89ff667, 0xfc57e51e, 0xbc4155f9, 0xfc05a6ee, 1349 0xbc1df408, 0xf835da4a, 0xb836d9a4, 0x3833580d, 1350 0x7826cb6c, 0xf8706900, 0xb87ae880, 0x3865db2e, 1351 0x78724889, 0x38a7789b, 0x78beca2f, 0x78f6c810, 1352 0xb8bef956, 0xfc6afabd, 0xbc734963, 0xfc3d5b8d, 1353 0xbc25fbb7, 0xf9189d05, 0xb91ecb1d, 0x39187a33, 1354 0x791f226d, 0xf95aa2f3, 0xb9587bb7, 0x395f7176, 1355 0x795d9143, 0x399e7e08, 0x799a2697, 0x79df3422, 1356 0xb99c2624, 0xfd5c2374, 0xbd5fa1d9, 0xfd1d595a, 1357 0xbd1b1869, 0x580022fb, 0x1800000b, 0xf8945060, 1358 0xd8000000, 0xf8ae6ba0, 0xf99a0080, 0x1a070035, 1359 0x3a0700a8, 0x5a0e0367, 0x7a11009b, 0x9a000380, 1360 0xba1e030c, 0xda0f0320, 0xfa030301, 0x0b340b12, 1361 0x2b2a278d, 0xcb22aa0f, 0x6b2d29bd, 0x8b2cce8c, 1362 0xab2b877e, 0xcb21c8ee, 0xeb3ba47d, 0x3a4d400e, 1363 0x7a5232c6, 0xba5e624e, 0xfa53814c, 0x3a52d8c2, 1364 0x7a4d8924, 0xba4b3aab, 0xfa4d7882, 0x1a96804c, 1365 0x1a912618, 0x5a90b0e6, 0x5a96976b, 0x9a9db06a, 1366 0x9a9b374c, 0xda95c14f, 0xda89c6fe, 0x5ac0015e, 1367 0x5ac005fd, 0x5ac00bdd, 0x5ac012b9, 0x5ac01404, 1368 0xdac002b2, 0xdac0061d, 0xdac00a95, 0xdac00e66, 1369 0xdac0107e, 0xdac01675, 0x1ac00b0b, 0x1ace0f3b, 1370 0x1ad221c3, 0x1ad825e7, 0x1ad92a3c, 0x1adc2f42, 1371 0x9ada0b25, 0x9ad20e1b, 0x9acc22a6, 0x9acc2480, 1372 0x9adc2a3b, 0x9ad22c5c, 0x9bce7dea, 0x9b597c6e, 1373 0x1b0e166f, 0x1b1ae490, 0x9b023044, 0x9b089e3d, 1374 0x9b391083, 0x9b24c73a, 0x9bb15f40, 0x9bbcc6af, 1375 0x1e23095b, 0x1e3918e0, 0x1e2f28c9, 0x1e2a39fd, 1376 0x1e270a22, 0x1e77096b, 0x1e771ba7, 0x1e6b2b6e, 1377 0x1e78388b, 0x1e6e09ec, 0x1f1c3574, 0x1f17f98b, 1378 0x1f2935da, 0x1f2574ea, 0x1f4b306f, 0x1f5ec7cf, 1379 0x1f6f3e93, 0x1f6226a9, 0x1e2040fb, 0x1e20c3dd, 1380 0x1e214031, 0x1e21c0c2, 0x1e22c06a, 0x1e604178, 1381 0x1e60c027, 0x1e61400b, 0x1e61c243, 0x1e6240dc, 1382 0x1e3800d6, 0x9e380360, 0x1e78005a, 0x9e7800e5, 1383 0x1e22017c, 0x9e2201b9, 0x1e6202eb, 0x9e620113, 1384 0x1e2602b2, 0x9e660299, 0x1e270253, 0x9e6703a2, 1385 0x1e2822c0, 0x1e7322a0, 0x1e202288, 0x1e602168, 1386 0x293c19f4, 0x2966387b, 0x69762971, 0xa9041dc7, 1387 0xa9475c0c, 0x29b61ccd, 0x29ee405e, 0x69ee0744, 1388 0xa9843977, 0xa9f46ebd, 0x28ba16b6, 0x28fc44db, 1389 0x68f61831, 0xa8b352ad, 0xa8c56d5e, 0x28024565, 1390 0x2874134e, 0xa8027597, 0xa87b1aa0, 0x0c40734f, 1391 0x4cdfa177, 0x0cc76ee8, 0x4cdf2733, 0x0d40c23d, 1392 0x4ddfcaf8, 0x0dd9ccaa, 0x4c408d52, 0x0cdf85ec, 1393 0x4d60c259, 0x0dffcbc1, 0x4de9ce50, 0x4cc24999, 1394 0x0c404a7a, 0x4d40e6af, 0x4ddfe9b9, 0x0dddef8e, 1395 0x4cdf07b1, 0x0cc000fb, 0x0d60e258, 0x0dffe740, 1396 0x0de2eb2c, 0xce648376, 0xce6184c7, 0xcec081fa, 1397 0xce6d89a2, 0xba5fd3e3, 0x3a5f03e5, 0xfa411be4, 1398 0x7a42cbe2, 0x93df03ff, 0xc820ffff, 0x8822fc7f, 1399 0xc8247cbf, 0x88267fff, 0x4e010fe0, 0x4e081fe1, 1400 0x4e0c1fe1, 0x4e0a1fe1, 0x4e071fe1, 0x4cc0ac3f, 1401 0x1e601000, 0x1e603000, 0x1e621000, 0x1e623000, 1402 0x1e641000, 0x1e643000, 0x1e661000, 0x1e663000, 1403 0x1e681000, 0x1e683000, 0x1e6a1000, 0x1e6a3000, 1404 0x1e6c1000, 0x1e6c3000, 0x1e6e1000, 0x1e6e3000, 1405 0x1e701000, 0x1e703000, 0x1e721000, 0x1e723000, 1406 0x1e741000, 0x1e743000, 0x1e761000, 0x1e763000, 1407 0x1e781000, 0x1e783000, 0x1e7a1000, 0x1e7a3000, 1408 0x1e7c1000, 0x1e7c3000, 0x1e7e1000, 0x1e7e3000, 1409 0xf8388098, 0xf8340010, 0xf8241175, 0xf83e22d0, 1410 0xf82432ef, 0xf83a5186, 0xf82f41ee, 0xf82973b9, 1411 0xf82b6194, 0xf8b28216, 0xf8b50358, 0xf8a61206, 1412 0xf8b02219, 0xf8bc3218, 0xf8ba514f, 0xf8ad428e, 1413 0xf8a173d7, 0xf8ae60c2, 0xf8e38328, 0xf8e003db, 1414 0xf8e513c5, 0xf8eb2019, 0xf8ff3260, 0xf8fd513a, 1415 0xf8fa41ec, 0xf8eb724b, 0xf8f96316, 0xf8608171, 1416 0xf86600dd, 0xf86512a5, 0xf8732250, 0xf87e339b, 1417 0xf861503c, 0xf874421d, 0xf86d73aa, 0xf87d62d3, 1418 0xb82a83e4, 0xb83503e8, 0xb833138a, 0xb82220b9, 1419 0xb82332c8, 0xb83350ad, 0xb83d42b8, 0xb83a7078, 1420 0xb83862fa, 0xb8af8075, 0xb8b80328, 0xb8b41230, 1421 0xb8a22001, 0xb8b83064, 0xb8ac539f, 0xb8aa405a, 1422 0xb8ac73f2, 0xb8a163ad, 0xb8e08193, 0xb8f101b6, 1423 0xb8fc13fe, 0xb8e1239a, 0xb8e4309e, 0xb8e6535e, 1424 0xb8f24109, 0xb8ec7280, 0xb8e16058, 0xb8608309, 1425 0xb87a03d0, 0xb86312ea, 0xb86a2244, 0xb862310b, 1426 0xb86a522f, 0xb862418a, 0xb86c71af, 0xb8626287, 1427 1428 }; 1429 // END Generated code -- do not edit 1430 1431 asm_check((unsigned int *)entry, insns, sizeof insns / sizeof insns[0]); 1432 1433 { 1434 address PC = __ pc(); 1435 __ ld1(v0, __ T16B, Address(r16)); // No offset 1436 __ ld1(v0, __ T8H, __ post(r16, 16)); // Post-index 1437 __ ld2(v0, v1, __ T8H, __ post(r24, 16 * 2)); // Post-index 1438 __ ld1(v0, __ T16B, __ post(r16, r17)); // Register post-index 1439 static const unsigned int vector_insns[] = { 1440 0x4c407200, // ld1 {v0.16b}, [x16] 1441 0x4cdf7600, // ld1 {v0.8h}, [x16], #16 1442 0x4cdf8700, // ld2 {v0.8h, v1.8h}, [x24], #32 1443 0x4cd17200, // ld1 {v0.16b}, [x16], x17 1444 }; 1445 asm_check((unsigned int *)PC, vector_insns, 1446 sizeof vector_insns / sizeof vector_insns[0]); 1447 } 1448 1449 BufferBlob::free(b); 1450 } 1451 1452 #endif // AARCH64