1b78f13911bfe6eda303e91ef215c87a165aae8aeAlexandre Rames// Copyright 2015, VIXL authors 2ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// All rights reserved. 3ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 4ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Redistribution and use in source and binary forms, with or without 5ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// modification, are permitted provided that the following conditions are met: 6ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 7ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// * Redistributions of source code must retain the above copyright notice, 8ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// this list of conditions and the following disclaimer. 9ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// * Redistributions in binary form must reproduce the above copyright notice, 10ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// this list of conditions and the following disclaimer in the documentation 11ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// and/or other materials provided with the distribution. 12ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// * Neither the name of ARM Limited nor the names of its contributors may be 13ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// used to endorse or promote products derived from this software without 14ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// specific prior written permission. 15ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 16ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND 17ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 20ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 27d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#ifndef VIXL_AARCH64_CONSTANTS_AARCH64_H_ 28d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#define VIXL_AARCH64_CONSTANTS_AARCH64_H_ 29ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 30b49bdb7996e603555eba4c8b56c7325e3e737ab6Alexandre Rames#include "../globals-vixl.h" 31b68bacb75c1ab265fc539afa93964c7f51f35589Alexandre Rames 32ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlnamespace vixl { 3388c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisnamespace aarch64 { 34ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 35ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlconst unsigned kNumberOfRegisters = 32; 365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst unsigned kNumberOfVRegisters = 32; 375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst unsigned kNumberOfFPRegisters = kNumberOfVRegisters; 385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// Callee saved registers are x21-x30(lr). 395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst int kNumberOfCalleeSavedRegisters = 10; 405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst int kFirstCalleeSavedRegisterIndex = 21; 415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// Callee saved FP registers are d8-d15. 425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst int kNumberOfCalleeSavedFPRegisters = 8; 435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlconst int kFirstCalleeSavedFPRegisterIndex = 8; 44ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 450f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// clang-format off 461107e04f82d4809214ff6592b3727298dee1fe45Alexandre Rames#define AARCH64_REGISTER_CODE_LIST(R) \ 4788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois R(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) \ 4888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois R(8) R(9) R(10) R(11) R(12) R(13) R(14) R(15) \ 4988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois R(16) R(17) R(18) R(19) R(20) R(21) R(22) R(23) \ 5088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois R(24) R(25) R(26) R(27) R(28) R(29) R(30) R(31) 5188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 5288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define INSTRUCTION_FIELDS_LIST(V_) \ 5388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Register fields */ \ 5488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rd, 4, 0, ExtractBits) /* Destination register. */ \ 5588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rn, 9, 5, ExtractBits) /* First source register. */ \ 5688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rm, 20, 16, ExtractBits) /* Second source register. */ \ 5788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Ra, 14, 10, ExtractBits) /* Third source register. */ \ 5888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rt, 4, 0, ExtractBits) /* Load/store register. */ \ 5988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rt2, 14, 10, ExtractBits) /* Load/store second register. */ \ 6088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Rs, 20, 16, ExtractBits) /* Exclusive access status. */ \ 6188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 6288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Common bits */ \ 6388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(SixtyFourBits, 31, 31, ExtractBits) \ 6488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(FlagsUpdate, 29, 29, ExtractBits) \ 6588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 6688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* PC relative addressing */ \ 6788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmPCRelHi, 23, 5, ExtractSignedBits) \ 6888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmPCRelLo, 30, 29, ExtractBits) \ 6988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 7088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Add/subtract/logical shift register */ \ 7188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ShiftDP, 23, 22, ExtractBits) \ 7288c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmDPShift, 15, 10, ExtractBits) \ 7388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 7488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Add/subtract immediate */ \ 7588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmAddSub, 21, 10, ExtractBits) \ 7688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ShiftAddSub, 23, 22, ExtractBits) \ 7788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 7888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Add/substract extend */ \ 7988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmExtendShift, 12, 10, ExtractBits) \ 8088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ExtendMode, 15, 13, ExtractBits) \ 8188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 8288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Move wide */ \ 8388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmMoveWide, 20, 5, ExtractBits) \ 8488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ShiftMoveWide, 22, 21, ExtractBits) \ 8588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 8688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Logical immediate, bitfield and extract */ \ 8788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(BitN, 22, 22, ExtractBits) \ 8888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmRotate, 21, 16, ExtractBits) \ 8988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmSetBits, 15, 10, ExtractBits) \ 9088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmR, 21, 16, ExtractBits) \ 9188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmS, 15, 10, ExtractBits) \ 9288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 9388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Test and branch immediate */ \ 9488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmTestBranch, 18, 5, ExtractSignedBits) \ 9588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmTestBranchBit40, 23, 19, ExtractBits) \ 9688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmTestBranchBit5, 31, 31, ExtractBits) \ 9788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 9888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Conditionals */ \ 9988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Condition, 15, 12, ExtractBits) \ 10088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ConditionBranch, 3, 0, ExtractBits) \ 10188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(Nzcv, 3, 0, ExtractBits) \ 10288c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmCondCmp, 20, 16, ExtractBits) \ 10388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmCondBranch, 23, 5, ExtractSignedBits) \ 10488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 10588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Floating point */ \ 10688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(FPType, 23, 22, ExtractBits) \ 10788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmFP, 20, 13, ExtractBits) \ 10888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(FPScale, 15, 10, ExtractBits) \ 10988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 11088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Load Store */ \ 11188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmLS, 20, 12, ExtractSignedBits) \ 11288c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmLSUnsigned, 21, 10, ExtractBits) \ 11388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmLSPair, 21, 15, ExtractSignedBits) \ 11488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmShiftLS, 12, 12, ExtractBits) \ 11588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LSOpc, 23, 22, ExtractBits) \ 11688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LSVector, 26, 26, ExtractBits) \ 11788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LSSize, 31, 30, ExtractBits) \ 11888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmPrefetchOperation, 4, 0, ExtractBits) \ 11988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(PrefetchHint, 4, 3, ExtractBits) \ 12088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(PrefetchTarget, 2, 1, ExtractBits) \ 12188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(PrefetchStream, 0, 0, ExtractBits) \ 12288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 12388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Other immediates */ \ 12488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmUncondBranch, 25, 0, ExtractSignedBits) \ 12588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmCmpBranch, 23, 5, ExtractSignedBits) \ 12688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmLLiteral, 23, 5, ExtractSignedBits) \ 12788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmException, 20, 5, ExtractBits) \ 12888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmHint, 11, 5, ExtractBits) \ 12988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmBarrierDomain, 11, 10, ExtractBits) \ 13088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmBarrierType, 9, 8, ExtractBits) \ 13188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 13288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* System (MRS, MSR, SYS) */ \ 133b106626553485e688388d1acd08347a8252704aaMartyn CapewellV_(ImmSystemRegister, 20, 5, ExtractBits) \ 13488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(SysO0, 19, 19, ExtractBits) \ 13588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(SysOp, 18, 5, ExtractBits) \ 136b106626553485e688388d1acd08347a8252704aaMartyn CapewellV_(SysOp0, 20, 19, ExtractBits) \ 13788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(SysOp1, 18, 16, ExtractBits) \ 13888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(SysOp2, 7, 5, ExtractBits) \ 13988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(CRn, 15, 12, ExtractBits) \ 14088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(CRm, 11, 8, ExtractBits) \ 14188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 14288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* Load-/store-exclusive */ \ 14388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LdStXLoad, 22, 22, ExtractBits) \ 14488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LdStXNotExclusive, 23, 23, ExtractBits) \ 14588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LdStXAcquireRelease, 15, 15, ExtractBits) \ 14688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LdStXSizeLog2, 31, 30, ExtractBits) \ 14788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(LdStXPair, 21, 21, ExtractBits) \ 14888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 14988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* NEON generic fields */ \ 15088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONQ, 30, 30, ExtractBits) \ 15188c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONSize, 23, 22, ExtractBits) \ 15288c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONLSSize, 11, 10, ExtractBits) \ 15388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONS, 12, 12, ExtractBits) \ 15488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONL, 21, 21, ExtractBits) \ 15588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONM, 20, 20, ExtractBits) \ 15688c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONH, 11, 11, ExtractBits) \ 15788c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONExt, 14, 11, ExtractBits) \ 15888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEON5, 20, 16, ExtractBits) \ 15988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEON4, 14, 11, ExtractBits) \ 16088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 16188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* NEON Modified Immediate fields */ \ 16288c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONabc, 18, 16, ExtractBits) \ 16388c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONdefgh, 9, 5, ExtractBits) \ 16488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONModImmOp, 29, 29, ExtractBits) \ 16588c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(NEONCmode, 15, 12, ExtractBits) \ 16688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois \ 16788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois/* NEON Shift Immediate fields */ \ 16888c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONImmhImmb, 22, 16, ExtractBits) \ 16988c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONImmh, 22, 19, ExtractBits) \ 17088c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisV_(ImmNEONImmb, 18, 16, ExtractBits) 1715bc98e5bed3f223ea6077a0f930e1d1062bad8bbJacob Bramley// clang-format on 1720f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl 1730f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl#define SYSTEM_REGISTER_FIELDS_LIST(V_, M_) \ 1740f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl /* NZCV */ \ 17588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(Flags, 31, 28, ExtractBits) \ 17688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(N, 31, 31, ExtractBits) \ 17788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(Z, 30, 30, ExtractBits) \ 17888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(C, 29, 29, ExtractBits) \ 17988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(V, 28, 28, ExtractBits) \ 1800f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl M_(NZCV, Flags_mask) \ 1810f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl /* FPCR */ \ 18288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(AHP, 26, 26, ExtractBits) \ 18388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(DN, 25, 25, ExtractBits) \ 18488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(FZ, 24, 24, ExtractBits) \ 18588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois V_(RMode, 23, 22, ExtractBits) \ 1860f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl M_(FPCR, AHP_mask | DN_mask | FZ_mask | RMode_mask) 187578645f14e122d2b87d907e298cda7e7d0babf1farmvixl 188ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Fields offsets. 1890f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl#define DECLARE_FIELDS_OFFSETS(Name, HighBit, LowBit, X) \ 1900f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl const int Name##_offset = LowBit; \ 1910f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl const int Name##_width = HighBit - LowBit + 1; \ 1920f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl const uint32_t Name##_mask = ((1 << Name##_width) - 1) << LowBit; 193578645f14e122d2b87d907e298cda7e7d0babf1farmvixl#define NOTHING(A, B) 194578645f14e122d2b87d907e298cda7e7d0babf1farmvixlINSTRUCTION_FIELDS_LIST(DECLARE_FIELDS_OFFSETS) 195578645f14e122d2b87d907e298cda7e7d0babf1farmvixlSYSTEM_REGISTER_FIELDS_LIST(DECLARE_FIELDS_OFFSETS, NOTHING) 196578645f14e122d2b87d907e298cda7e7d0babf1farmvixl#undef NOTHING 197ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl#undef DECLARE_FIELDS_BITS 198ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 199578645f14e122d2b87d907e298cda7e7d0babf1farmvixl// ImmPCRel is a compound field (not present in INSTRUCTION_FIELDS_LIST), formed 200578645f14e122d2b87d907e298cda7e7d0babf1farmvixl// from ImmPCRelLo and ImmPCRelHi. 201ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlconst int ImmPCRel_mask = ImmPCRelLo_mask | ImmPCRelHi_mask; 202ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 2030f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// Disable `clang-format` for the `enum`s below. We care about the manual 2040f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// formatting that `clang-format` would destroy. 2050f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// clang-format off 2060f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl 207ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Condition codes. 208ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum Condition { 2095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl eq = 0, // Z set Equal. 2105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl ne = 1, // Z clear Not equal. 2115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl cs = 2, // C set Carry set. 2125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl cc = 3, // C clear Carry clear. 2135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl mi = 4, // N set Negative. 2145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl pl = 5, // N clear Positive or zero. 2155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl vs = 6, // V set Overflow. 2165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl vc = 7, // V clear No overflow. 2175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl hi = 8, // C set, Z clear Unsigned higher. 2185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl ls = 9, // C clear or Z set Unsigned lower or same. 2195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl ge = 10, // N == V Greater or equal. 2205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl lt = 11, // N != V Less than. 2215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl gt = 12, // Z clear, N == V Greater than. 2225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl le = 13, // Z set or N != V Less then or equal 2235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl al = 14, // Always. 2245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl nv = 15, // Behaves as always/al. 2255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 2265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // Aliases. 2275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl hs = cs, // C set Unsigned higher or same. 2285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl lo = cc // C clear Unsigned lower. 229ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 230ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 231ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlinline Condition InvertCondition(Condition cond) { 232578645f14e122d2b87d907e298cda7e7d0babf1farmvixl // Conditions al and nv behave identically, as "always true". They can't be 233578645f14e122d2b87d907e298cda7e7d0babf1farmvixl // inverted, because there is no "always false" condition. 234b0c8ae2a5f0abc58f67322052d39bfd47edb2892armvixl VIXL_ASSERT((cond != al) && (cond != nv)); 235ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl return static_cast<Condition>(cond ^ 1); 236ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl} 237ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 2386e2c8275d5f34a531fe1eef7a7aa877601be8558armvixlenum FPTrapFlags { 2396e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl EnableTrap = 1, 2406e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl DisableTrap = 0 2416e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl}; 2426e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl 243ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FlagsUpdate { 244ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SetFlags = 1, 245ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LeaveFlags = 0 246ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 247ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 248ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum StatusFlags { 249ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl NoFlag = 0, 250578645f14e122d2b87d907e298cda7e7d0babf1farmvixl 251578645f14e122d2b87d907e298cda7e7d0babf1farmvixl // Derive the flag combinations from the system register bit descriptions. 252578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NFlag = N_mask, 253578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ZFlag = Z_mask, 254578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CFlag = C_mask, 255578645f14e122d2b87d907e298cda7e7d0babf1farmvixl VFlag = V_mask, 256578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NZFlag = NFlag | ZFlag, 257578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NCFlag = NFlag | CFlag, 258578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NVFlag = NFlag | VFlag, 259578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ZCFlag = ZFlag | CFlag, 260578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ZVFlag = ZFlag | VFlag, 261578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CVFlag = CFlag | VFlag, 262578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NZCFlag = NFlag | ZFlag | CFlag, 263578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NZVFlag = NFlag | ZFlag | VFlag, 264578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NCVFlag = NFlag | CFlag | VFlag, 265578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ZCVFlag = ZFlag | CFlag | VFlag, 266578645f14e122d2b87d907e298cda7e7d0babf1farmvixl NZCVFlag = NFlag | ZFlag | CFlag | VFlag, 267578645f14e122d2b87d907e298cda7e7d0babf1farmvixl 268578645f14e122d2b87d907e298cda7e7d0babf1farmvixl // Floating-point comparison results. 269578645f14e122d2b87d907e298cda7e7d0babf1farmvixl FPEqualFlag = ZCFlag, 270578645f14e122d2b87d907e298cda7e7d0babf1farmvixl FPLessThanFlag = NFlag, 271578645f14e122d2b87d907e298cda7e7d0babf1farmvixl FPGreaterThanFlag = CFlag, 272578645f14e122d2b87d907e298cda7e7d0babf1farmvixl FPUnorderedFlag = CVFlag 273ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 274ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 275ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum Shift { 276ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl NO_SHIFT = -1, 277ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LSL = 0x0, 278ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LSR = 0x1, 279ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ASR = 0x2, 2805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl ROR = 0x3, 2815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl MSL = 0x4 282ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 283ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 284ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum Extend { 285ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl NO_EXTEND = -1, 286ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UXTB = 0, 287ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UXTH = 1, 288ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UXTW = 2, 289ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UXTX = 3, 290ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SXTB = 4, 291ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SXTH = 5, 292ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SXTW = 6, 293ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SXTX = 7 294ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 295ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 296ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum SystemHint { 297ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl NOP = 0, 298ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl YIELD = 1, 299ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl WFE = 2, 300ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl WFI = 3, 301ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SEV = 4, 302ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SEVL = 5 303ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 304ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 305f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixlenum BarrierDomain { 306f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl OuterShareable = 0, 307f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl NonShareable = 1, 308f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl InnerShareable = 2, 309f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FullSystem = 3 310f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl}; 311f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl 312f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixlenum BarrierType { 313f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl BarrierOther = 0, 314f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl BarrierReads = 1, 315f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl BarrierWrites = 2, 316f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl BarrierAll = 3 317f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl}; 318f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl 319330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixlenum PrefetchOperation { 320330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL1KEEP = 0x00, 321330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL1STRM = 0x01, 322330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL2KEEP = 0x02, 323330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL2STRM = 0x03, 324330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL3KEEP = 0x04, 325330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLDL3STRM = 0x05, 326330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl 327330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL1KEEP = 0x08, 328330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL1STRM = 0x09, 329330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL2KEEP = 0x0a, 330330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL2STRM = 0x0b, 331330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL3KEEP = 0x0c, 332330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PLIL3STRM = 0x0d, 333330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl 334330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL1KEEP = 0x10, 335330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL1STRM = 0x11, 336330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL2KEEP = 0x12, 337330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL2STRM = 0x13, 338330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL3KEEP = 0x14, 339330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PSTL3STRM = 0x15 340330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl}; 341330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl 342b106626553485e688388d1acd08347a8252704aaMartyn Capewelltemplate<int op0, int op1, int crn, int crm, int op2> 343b106626553485e688388d1acd08347a8252704aaMartyn Capewellclass SystemRegisterEncoder { 344b106626553485e688388d1acd08347a8252704aaMartyn Capewell public: 345b106626553485e688388d1acd08347a8252704aaMartyn Capewell static const uint32_t value = 346b106626553485e688388d1acd08347a8252704aaMartyn Capewell ((op0 << SysO0_offset) | 347b106626553485e688388d1acd08347a8252704aaMartyn Capewell (op1 << SysOp1_offset) | 348b106626553485e688388d1acd08347a8252704aaMartyn Capewell (crn << CRn_offset) | 349b106626553485e688388d1acd08347a8252704aaMartyn Capewell (crm << CRm_offset) | 350b106626553485e688388d1acd08347a8252704aaMartyn Capewell (op2 << SysOp2_offset)) >> ImmSystemRegister_offset; 351b106626553485e688388d1acd08347a8252704aaMartyn Capewell}; 352b106626553485e688388d1acd08347a8252704aaMartyn Capewell 353ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// System/special register names. 354ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// This information is not encoded as one field but as the concatenation of 355578645f14e122d2b87d907e298cda7e7d0babf1farmvixl// multiple fields (Op0<0>, Op1, Crn, Crm, Op2). 356ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum SystemRegister { 357b106626553485e688388d1acd08347a8252704aaMartyn Capewell NZCV = SystemRegisterEncoder<3, 3, 4, 2, 0>::value, 358b106626553485e688388d1acd08347a8252704aaMartyn Capewell FPCR = SystemRegisterEncoder<3, 3, 4, 4, 0>::value 359ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 360ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 3615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum InstructionCacheOp { 3625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl IVAU = ((0x3 << SysOp1_offset) | 3635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x7 << CRn_offset) | 3645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x5 << CRm_offset) | 3655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x1 << SysOp2_offset)) >> SysOp_offset 3665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 3675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 3685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum DataCacheOp { 3695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl CVAC = ((0x3 << SysOp1_offset) | 3705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x7 << CRn_offset) | 3715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0xa << CRm_offset) | 3725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl CVAU = ((0x3 << SysOp1_offset) | 3745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x7 << CRn_offset) | 3755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0xb << CRm_offset) | 3765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl CIVAC = ((0x3 << SysOp1_offset) | 3785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x7 << CRn_offset) | 3795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0xe << CRm_offset) | 3805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl ZVA = ((0x3 << SysOp1_offset) | 3825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x7 << CRn_offset) | 3835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x4 << CRm_offset) | 3845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl (0x1 << SysOp2_offset)) >> SysOp_offset 3855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 3865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 387ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Instruction enumerations. 388ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 389ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// These are the masks that define a class of instructions, and the list of 390ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// instructions within each class. Each enumeration has a Fixed, FMask and 391ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Mask value. 392ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 393ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Fixed: The fixed bits in this instruction class. 394ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// FMask: The mask used to extract the fixed bits in the class. 395ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Mask: The mask used to identify the instructions within a class. 396ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 397ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// The enumerations can be used like this: 398ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// 399b0c8ae2a5f0abc58f67322052d39bfd47edb2892armvixl// VIXL_ASSERT(instr->Mask(PCRelAddressingFMask) == PCRelAddressingFixed); 400ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// switch(instr->Mask(PCRelAddressingMask)) { 401ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// case ADR: Format("adr 'Xd, 'AddrPCRelByte"); break; 402ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// case ADRP: Format("adrp 'Xd, 'AddrPCRelPage"); break; 403ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// default: printf("Unknown instruction\n"); 404ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// } 405ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 406ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 407ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Generic fields. 408ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum GenericInstrField { 409ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SixtyFourBits = 0x80000000, 410ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ThirtyTwoBits = 0x00000000, 411ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FP32 = 0x00000000, 412ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FP64 = 0x00400000 413ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 414ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 4155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONFormatField { 4165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONFormatFieldMask = 0x40C00000, 4175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_Q = 0x40000000, 4185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_8B = 0x00000000, 4195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_16B = NEON_8B | NEON_Q, 4205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_4H = 0x00400000, 4215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_8H = NEON_4H | NEON_Q, 4225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_2S = 0x00800000, 4235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_4S = NEON_2S | NEON_Q, 4245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_1D = 0x00C00000, 4255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_2D = 0x00C00000 | NEON_Q 4265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 4275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 4285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONFPFormatField { 4295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONFPFormatFieldMask = 0x40400000, 4305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FP_2S = FP32, 4315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FP_4S = FP32 | NEON_Q, 4325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FP_2D = FP64 | NEON_Q 4335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 4345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 4355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLSFormatField { 4365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLSFormatFieldMask = 0x40000C00, 4375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_8B = 0x00000000, 4385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_16B = LS_NEON_8B | NEON_Q, 4395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_4H = 0x00000400, 4405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_8H = LS_NEON_4H | NEON_Q, 4415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_2S = 0x00000800, 4425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_4S = LS_NEON_2S | NEON_Q, 4435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_1D = 0x00000C00, 4445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LS_NEON_2D = LS_NEON_1D | NEON_Q 4455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 4465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 4475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalarFormatField { 4485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarFormatFieldMask = 0x00C00000, 4495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar = 0x10000000, 4505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_B = 0x00000000, 4515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_H = 0x00400000, 4525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_S = 0x00800000, 4535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_D = 0x00C00000 4545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 4555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 456ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// PC relative addressing. 457ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum PCRelAddressingOp { 458ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PCRelAddressingFixed = 0x10000000, 459ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PCRelAddressingFMask = 0x1F000000, 460ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PCRelAddressingMask = 0x9F000000, 461ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADR = PCRelAddressingFixed | 0x00000000, 462ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADRP = PCRelAddressingFixed | 0x80000000 463ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 464ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 465ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Add/sub (immediate, shifted and extended.) 466ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlconst int kSFOffset = 31; 467ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum AddSubOp { 468ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubOpMask = 0x60000000, 469ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubSetFlagsBit = 0x20000000, 470ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADD = 0x00000000, 471ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADDS = ADD | AddSubSetFlagsBit, 472ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SUB = 0x40000000, 473ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SUBS = SUB | AddSubSetFlagsBit 474ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 475ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 476ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl#define ADD_SUB_OP_LIST(V) \ 477ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ADD), \ 478ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ADDS), \ 479ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(SUB), \ 480ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(SUBS) 481ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 482ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum AddSubImmediateOp { 483ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubImmediateFixed = 0x11000000, 484ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubImmediateFMask = 0x1F000000, 485ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubImmediateMask = 0xFF000000, 486ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define ADD_SUB_IMMEDIATE(A) \ 487ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_w_imm = AddSubImmediateFixed | A, \ 488ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_x_imm = AddSubImmediateFixed | A | SixtyFourBits 489ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADD_SUB_OP_LIST(ADD_SUB_IMMEDIATE) 490ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef ADD_SUB_IMMEDIATE 491ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 492ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 493ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum AddSubShiftedOp { 494ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubShiftedFixed = 0x0B000000, 495ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubShiftedFMask = 0x1F200000, 496ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubShiftedMask = 0xFF200000, 497ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define ADD_SUB_SHIFTED(A) \ 498ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_w_shift = AddSubShiftedFixed | A, \ 499ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_x_shift = AddSubShiftedFixed | A | SixtyFourBits 500ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADD_SUB_OP_LIST(ADD_SUB_SHIFTED) 501ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef ADD_SUB_SHIFTED 502ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 503ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 504ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum AddSubExtendedOp { 505ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubExtendedFixed = 0x0B200000, 506ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubExtendedFMask = 0x1F200000, 507ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubExtendedMask = 0xFFE00000, 508ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define ADD_SUB_EXTENDED(A) \ 509ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_w_ext = AddSubExtendedFixed | A, \ 510ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_x_ext = AddSubExtendedFixed | A | SixtyFourBits 511ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADD_SUB_OP_LIST(ADD_SUB_EXTENDED) 512ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef ADD_SUB_EXTENDED 513ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 514ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 515ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Add/sub with carry. 516ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum AddSubWithCarryOp { 517ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubWithCarryFixed = 0x1A000000, 518ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubWithCarryFMask = 0x1FE00000, 519ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AddSubWithCarryMask = 0xFFE0FC00, 520ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADC_w = AddSubWithCarryFixed | ADD, 521ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADC_x = AddSubWithCarryFixed | ADD | SixtyFourBits, 522ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADC = ADC_w, 523ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADCS_w = AddSubWithCarryFixed | ADDS, 524ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ADCS_x = AddSubWithCarryFixed | ADDS | SixtyFourBits, 525ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBC_w = AddSubWithCarryFixed | SUB, 526ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBC_x = AddSubWithCarryFixed | SUB | SixtyFourBits, 527ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBC = SBC_w, 528ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBCS_w = AddSubWithCarryFixed | SUBS, 529ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBCS_x = AddSubWithCarryFixed | SUBS | SixtyFourBits 530ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 531ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 532ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 533ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Logical (immediate and shifted register). 534ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LogicalOp { 535ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalOpMask = 0x60200000, 536ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl NOT = 0x00200000, 537ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND = 0x00000000, 538ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BIC = AND | NOT, 539ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR = 0x20000000, 540ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORN = ORR | NOT, 541ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR = 0x40000000, 542ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EON = EOR | NOT, 543ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS = 0x60000000, 544ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BICS = ANDS | NOT 545ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 546ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 547ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Logical immediate. 548ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LogicalImmediateOp { 549ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalImmediateFixed = 0x12000000, 550ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalImmediateFMask = 0x1F800000, 551ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalImmediateMask = 0xFF800000, 552ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND_w_imm = LogicalImmediateFixed | AND, 553ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND_x_imm = LogicalImmediateFixed | AND | SixtyFourBits, 554ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR_w_imm = LogicalImmediateFixed | ORR, 555ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR_x_imm = LogicalImmediateFixed | ORR | SixtyFourBits, 556ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR_w_imm = LogicalImmediateFixed | EOR, 557ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR_x_imm = LogicalImmediateFixed | EOR | SixtyFourBits, 558ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS_w_imm = LogicalImmediateFixed | ANDS, 559ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS_x_imm = LogicalImmediateFixed | ANDS | SixtyFourBits 560ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 561ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 562ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Logical shifted register. 563ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LogicalShiftedOp { 564ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalShiftedFixed = 0x0A000000, 565ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalShiftedFMask = 0x1F000000, 566ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LogicalShiftedMask = 0xFF200000, 567ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND_w = LogicalShiftedFixed | AND, 568ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND_x = LogicalShiftedFixed | AND | SixtyFourBits, 569ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl AND_shift = AND_w, 570ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BIC_w = LogicalShiftedFixed | BIC, 571ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BIC_x = LogicalShiftedFixed | BIC | SixtyFourBits, 572ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BIC_shift = BIC_w, 573ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR_w = LogicalShiftedFixed | ORR, 574ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR_x = LogicalShiftedFixed | ORR | SixtyFourBits, 575ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORR_shift = ORR_w, 576ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORN_w = LogicalShiftedFixed | ORN, 577ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORN_x = LogicalShiftedFixed | ORN | SixtyFourBits, 578ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ORN_shift = ORN_w, 579ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR_w = LogicalShiftedFixed | EOR, 580ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR_x = LogicalShiftedFixed | EOR | SixtyFourBits, 581ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EOR_shift = EOR_w, 582ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EON_w = LogicalShiftedFixed | EON, 583ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EON_x = LogicalShiftedFixed | EON | SixtyFourBits, 584ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EON_shift = EON_w, 585ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS_w = LogicalShiftedFixed | ANDS, 586ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS_x = LogicalShiftedFixed | ANDS | SixtyFourBits, 587ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ANDS_shift = ANDS_w, 588ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BICS_w = LogicalShiftedFixed | BICS, 589ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BICS_x = LogicalShiftedFixed | BICS | SixtyFourBits, 590ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BICS_shift = BICS_w 591ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 592ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 593ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Move wide immediate. 594ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum MoveWideImmediateOp { 595ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MoveWideImmediateFixed = 0x12800000, 596ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MoveWideImmediateFMask = 0x1F800000, 597ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MoveWideImmediateMask = 0xFF800000, 598ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVN = 0x00000000, 599ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVZ = 0x40000000, 600ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVK = 0x60000000, 601ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVN_w = MoveWideImmediateFixed | MOVN, 602ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVN_x = MoveWideImmediateFixed | MOVN | SixtyFourBits, 603ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVZ_w = MoveWideImmediateFixed | MOVZ, 604ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVZ_x = MoveWideImmediateFixed | MOVZ | SixtyFourBits, 605ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVK_w = MoveWideImmediateFixed | MOVK, 606ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MOVK_x = MoveWideImmediateFixed | MOVK | SixtyFourBits 607ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 608ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 609ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Bitfield. 610ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlconst int kBitfieldNOffset = 22; 611ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum BitfieldOp { 612ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BitfieldFixed = 0x13000000, 613ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BitfieldFMask = 0x1F800000, 614ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BitfieldMask = 0xFF800000, 615ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBFM_w = BitfieldFixed | 0x00000000, 616ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBFM_x = BitfieldFixed | 0x80000000, 617ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SBFM = SBFM_w, 618ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BFM_w = BitfieldFixed | 0x20000000, 619ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BFM_x = BitfieldFixed | 0xA0000000, 620ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BFM = BFM_w, 621ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UBFM_w = BitfieldFixed | 0x40000000, 622ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UBFM_x = BitfieldFixed | 0xC0000000, 623ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UBFM = UBFM_w 624ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl // Bitfield N field. 625ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 626ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 627ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Extract. 628ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ExtractOp { 629ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExtractFixed = 0x13800000, 630ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExtractFMask = 0x1F800000, 631ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExtractMask = 0xFFA00000, 632ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EXTR_w = ExtractFixed | 0x00000000, 633ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EXTR_x = ExtractFixed | 0x80000000, 634ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl EXTR = EXTR_w 635ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 636ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 637ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Unconditional branch. 638ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum UnconditionalBranchOp { 639ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchFixed = 0x14000000, 640ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchFMask = 0x7C000000, 641ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchMask = 0xFC000000, 642ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl B = UnconditionalBranchFixed | 0x00000000, 643ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BL = UnconditionalBranchFixed | 0x80000000 644ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 645ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 646ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Unconditional branch to register. 647ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum UnconditionalBranchToRegisterOp { 648ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchToRegisterFixed = 0xD6000000, 649ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchToRegisterFMask = 0xFE000000, 650ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UnconditionalBranchToRegisterMask = 0xFFFFFC1F, 651ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BR = UnconditionalBranchToRegisterFixed | 0x001F0000, 652ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BLR = UnconditionalBranchToRegisterFixed | 0x003F0000, 653ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl RET = UnconditionalBranchToRegisterFixed | 0x005F0000 654ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 655ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 656ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Compare and branch. 657ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum CompareBranchOp { 658ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CompareBranchFixed = 0x34000000, 659ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CompareBranchFMask = 0x7E000000, 660ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CompareBranchMask = 0xFF000000, 661ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBZ_w = CompareBranchFixed | 0x00000000, 662ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBZ_x = CompareBranchFixed | 0x80000000, 663ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBZ = CBZ_w, 664ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBNZ_w = CompareBranchFixed | 0x01000000, 665ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBNZ_x = CompareBranchFixed | 0x81000000, 666ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CBNZ = CBNZ_w 667ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 668ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 669ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Test and branch. 670ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum TestBranchOp { 671ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl TestBranchFixed = 0x36000000, 672ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl TestBranchFMask = 0x7E000000, 673ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl TestBranchMask = 0x7F000000, 674ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl TBZ = TestBranchFixed | 0x00000000, 675ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl TBNZ = TestBranchFixed | 0x01000000 676ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 677ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 678ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conditional branch. 679ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ConditionalBranchOp { 680ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalBranchFixed = 0x54000000, 681ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalBranchFMask = 0xFE000000, 682ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalBranchMask = 0xFF000010, 683ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl B_cond = ConditionalBranchFixed | 0x00000000 684ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 685ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 686ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// System. 687ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// System instruction encoding is complicated because some instructions use op 688ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// and CR fields to encode parameters. To handle this cleanly, the system 689ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// instructions are split into more than one enum. 690ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 691ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum SystemOp { 692ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemFixed = 0xD5000000, 693ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemFMask = 0xFFC00000 694ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 695ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 696ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum SystemSysRegOp { 697ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemSysRegFixed = 0xD5100000, 698ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemSysRegFMask = 0xFFD00000, 699ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemSysRegMask = 0xFFF00000, 700ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MRS = SystemSysRegFixed | 0x00200000, 701ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MSR = SystemSysRegFixed | 0x00000000 702ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 703ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 704ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum SystemHintOp { 705ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemHintFixed = 0xD503201F, 706ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemHintFMask = 0xFFFFF01F, 707ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SystemHintMask = 0xFFFFF01F, 708ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl HINT = SystemHintFixed | 0x00000000 709ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 710ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 7115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum SystemSysOp { 7125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl SystemSysFixed = 0xD5080000, 7135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl SystemSysFMask = 0xFFF80000, 7145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl SystemSysMask = 0xFFF80000, 7155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl SYS = SystemSysFixed | 0x00000000 7165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 7175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 718ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Exception. 719ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ExceptionOp { 720ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExceptionFixed = 0xD4000000, 721ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExceptionFMask = 0xFF000000, 722ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ExceptionMask = 0xFFE0001F, 723ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl HLT = ExceptionFixed | 0x00400000, 724ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl BRK = ExceptionFixed | 0x00200000, 725578645f14e122d2b87d907e298cda7e7d0babf1farmvixl SVC = ExceptionFixed | 0x00000001, 726578645f14e122d2b87d907e298cda7e7d0babf1farmvixl HVC = ExceptionFixed | 0x00000002, 727578645f14e122d2b87d907e298cda7e7d0babf1farmvixl SMC = ExceptionFixed | 0x00000003, 728578645f14e122d2b87d907e298cda7e7d0babf1farmvixl DCPS1 = ExceptionFixed | 0x00A00001, 729578645f14e122d2b87d907e298cda7e7d0babf1farmvixl DCPS2 = ExceptionFixed | 0x00A00002, 730578645f14e122d2b87d907e298cda7e7d0babf1farmvixl DCPS3 = ExceptionFixed | 0x00A00003 731ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 732ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 733f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixlenum MemBarrierOp { 734f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl MemBarrierFixed = 0xD503309F, 735f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl MemBarrierFMask = 0xFFFFF09F, 736f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl MemBarrierMask = 0xFFFFF0FF, 737f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl DSB = MemBarrierFixed | 0x00000000, 738f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl DMB = MemBarrierFixed | 0x00000020, 739f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl ISB = MemBarrierFixed | 0x00000040 740f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl}; 741f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl 7424a102baf640077d6794c0b33bb976f94b86c532barmvixlenum SystemExclusiveMonitorOp { 7434a102baf640077d6794c0b33bb976f94b86c532barmvixl SystemExclusiveMonitorFixed = 0xD503305F, 7444a102baf640077d6794c0b33bb976f94b86c532barmvixl SystemExclusiveMonitorFMask = 0xFFFFF0FF, 7454a102baf640077d6794c0b33bb976f94b86c532barmvixl SystemExclusiveMonitorMask = 0xFFFFF0FF, 7464a102baf640077d6794c0b33bb976f94b86c532barmvixl CLREX = SystemExclusiveMonitorFixed 7474a102baf640077d6794c0b33bb976f94b86c532barmvixl}; 7484a102baf640077d6794c0b33bb976f94b86c532barmvixl 749ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Any load or store. 750ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStoreAnyOp { 751ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreAnyFMask = 0x0a000000, 752ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreAnyFixed = 0x08000000 753ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 754ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 755330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl// Any load pair or store pair. 756330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixlenum LoadStorePairAnyOp { 757330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl LoadStorePairAnyFMask = 0x3a000000, 758330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl LoadStorePairAnyFixed = 0x28000000 759330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl}; 760330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl 761ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl#define LOAD_STORE_PAIR_OP_LIST(V) \ 762ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(STP, w, 0x00000000), \ 763ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LDP, w, 0x00400000), \ 764ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LDPSW, x, 0x40400000), \ 765ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(STP, x, 0x80000000), \ 766ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LDP, x, 0x80400000), \ 767ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(STP, s, 0x04000000), \ 768ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LDP, s, 0x04400000), \ 769ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(STP, d, 0x44000000), \ 7705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LDP, d, 0x44400000), \ 7715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(STP, q, 0x84000000), \ 7725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LDP, q, 0x84400000) 773ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 774ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store pair (post, pre and offset.) 775ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePairOp { 776ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairMask = 0xC4400000, 777ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairLBit = 1 << 22, 778ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_PAIR(A, B, C) \ 779ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_##B = C 780ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR) 781ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_PAIR 782ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 783ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 784ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePairPostIndexOp { 785ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPostIndexFixed = 0x28800000, 786ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPostIndexFMask = 0x3B800000, 787ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPostIndexMask = 0xFFC00000, 788ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_PAIR_POST_INDEX(A, B, C) \ 789ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_##B##_post = LoadStorePairPostIndexFixed | A##_##B 790ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_POST_INDEX) 791ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_PAIR_POST_INDEX 792ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 793ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 794ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePairPreIndexOp { 795ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPreIndexFixed = 0x29800000, 796ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPreIndexFMask = 0x3B800000, 797ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairPreIndexMask = 0xFFC00000, 798ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_PAIR_PRE_INDEX(A, B, C) \ 799ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_##B##_pre = LoadStorePairPreIndexFixed | A##_##B 800ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_PRE_INDEX) 801ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_PAIR_PRE_INDEX 802ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 803ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 804ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePairOffsetOp { 805ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairOffsetFixed = 0x29000000, 806ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairOffsetFMask = 0x3B800000, 807ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairOffsetMask = 0xFFC00000, 808ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_PAIR_OFFSET(A, B, C) \ 809ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##_##B##_off = LoadStorePairOffsetFixed | A##_##B 810ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_OFFSET) 811ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_PAIR_OFFSET 812ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 813ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 814ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePairNonTemporalOp { 815ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairNonTemporalFixed = 0x28000000, 816ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairNonTemporalFMask = 0x3B800000, 817ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePairNonTemporalMask = 0xFFC00000, 8185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LoadStorePairNonTemporalLBit = 1 << 22, 819ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl STNP_w = LoadStorePairNonTemporalFixed | STP_w, 820ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDNP_w = LoadStorePairNonTemporalFixed | LDP_w, 821ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl STNP_x = LoadStorePairNonTemporalFixed | STP_x, 822ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDNP_x = LoadStorePairNonTemporalFixed | LDP_x, 823ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl STNP_s = LoadStorePairNonTemporalFixed | STP_s, 824ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDNP_s = LoadStorePairNonTemporalFixed | LDP_s, 825ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl STNP_d = LoadStorePairNonTemporalFixed | STP_d, 8265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LDNP_d = LoadStorePairNonTemporalFixed | LDP_d, 8275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl STNP_q = LoadStorePairNonTemporalFixed | STP_q, 8285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LDNP_q = LoadStorePairNonTemporalFixed | LDP_q 829ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 830ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 831ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load literal. 832ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadLiteralOp { 833ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadLiteralFixed = 0x18000000, 834ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadLiteralFMask = 0x3B000000, 835ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadLiteralMask = 0xFF000000, 836ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDR_w_lit = LoadLiteralFixed | 0x00000000, 837ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDR_x_lit = LoadLiteralFixed | 0x40000000, 838ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDRSW_x_lit = LoadLiteralFixed | 0x80000000, 839ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PRFM_lit = LoadLiteralFixed | 0xC0000000, 840ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LDR_s_lit = LoadLiteralFixed | 0x04000000, 8415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LDR_d_lit = LoadLiteralFixed | 0x44000000, 8425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LDR_q_lit = LoadLiteralFixed | 0x84000000 843ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 844ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 845ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl#define LOAD_STORE_OP_LIST(V) \ 846ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, RB, w, 0x00000000), \ 847ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, RH, w, 0x40000000), \ 848ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, R, w, 0x80000000), \ 849ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, R, x, 0xC0000000), \ 850ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RB, w, 0x00400000), \ 851ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RH, w, 0x40400000), \ 852ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, R, w, 0x80400000), \ 853ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, R, x, 0xC0400000), \ 854ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RSB, x, 0x00800000), \ 855ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RSH, x, 0x40800000), \ 856ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RSW, x, 0x80800000), \ 857ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RSB, w, 0x00C00000), \ 858ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, RSH, w, 0x40C00000), \ 8595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(ST, R, b, 0x04000000), \ 8605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(ST, R, h, 0x44000000), \ 861ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, R, s, 0x84000000), \ 862ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(ST, R, d, 0xC4000000), \ 8635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(ST, R, q, 0x04800000), \ 8645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LD, R, b, 0x04400000), \ 8655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LD, R, h, 0x44400000), \ 866ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl V(LD, R, s, 0x84400000), \ 8675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LD, R, d, 0xC4400000), \ 8685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl V(LD, R, q, 0x04C00000) 869ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 870330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl// Load/store (post, pre, offset and unsigned.) 871330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixlenum LoadStoreOp { 8725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LoadStoreMask = 0xC4C00000, 8735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl LoadStoreVMask = 0x04000000, 874330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl #define LOAD_STORE(A, B, C, D) \ 875330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl A##B##_##C = D 876330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl LOAD_STORE_OP_LIST(LOAD_STORE), 877330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl #undef LOAD_STORE 878330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PRFM = 0xC0800000 879330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl}; 880330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl 881ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store unscaled offset. 882ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStoreUnscaledOffsetOp { 883ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnscaledOffsetFixed = 0x38000000, 884ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnscaledOffsetFMask = 0x3B200C00, 885ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnscaledOffsetMask = 0xFFE00C00, 886330dc7153e671968beb67f09ed2cb7b5bda334dbarmvixl PRFUM = LoadStoreUnscaledOffsetFixed | PRFM, 887ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_UNSCALED(A, B, C, D) \ 888ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##U##B##_##C = LoadStoreUnscaledOffsetFixed | D 889ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_UNSCALED) 890ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_UNSCALED 891ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 892ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 893ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store post index. 894ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePostIndex { 895ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePostIndexFixed = 0x38000400, 896ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePostIndexFMask = 0x3B200C00, 897ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePostIndexMask = 0xFFE00C00, 898ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_POST_INDEX(A, B, C, D) \ 899ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##B##_##C##_post = LoadStorePostIndexFixed | D 900ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_POST_INDEX) 901ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_POST_INDEX 902ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 903ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 904ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store pre index. 905ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStorePreIndex { 906ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePreIndexFixed = 0x38000C00, 907ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePreIndexFMask = 0x3B200C00, 908ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStorePreIndexMask = 0xFFE00C00, 909ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_PRE_INDEX(A, B, C, D) \ 910ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##B##_##C##_pre = LoadStorePreIndexFixed | D 911ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_PRE_INDEX) 912ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_PRE_INDEX 913ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 914ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 915ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store unsigned offset. 916ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStoreUnsignedOffset { 917ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnsignedOffsetFixed = 0x39000000, 918ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnsignedOffsetFMask = 0x3B000000, 919ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreUnsignedOffsetMask = 0xFFC00000, 920ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PRFM_unsigned = LoadStoreUnsignedOffsetFixed | PRFM, 921ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_UNSIGNED_OFFSET(A, B, C, D) \ 922ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##B##_##C##_unsigned = LoadStoreUnsignedOffsetFixed | D 923ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_UNSIGNED_OFFSET) 924ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_UNSIGNED_OFFSET 925ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 926ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 927ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Load/store register offset. 928ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum LoadStoreRegisterOffset { 929ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreRegisterOffsetFixed = 0x38200800, 930ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreRegisterOffsetFMask = 0x3B200C00, 931ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LoadStoreRegisterOffsetMask = 0xFFE00C00, 932ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl PRFM_reg = LoadStoreRegisterOffsetFixed | PRFM, 933ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #define LOAD_STORE_REGISTER_OFFSET(A, B, C, D) \ 934ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl A##B##_##C##_reg = LoadStoreRegisterOffsetFixed | D 935ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_REGISTER_OFFSET) 936ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl #undef LOAD_STORE_REGISTER_OFFSET 937ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 938ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 9394a102baf640077d6794c0b33bb976f94b86c532barmvixlenum LoadStoreExclusive { 9404a102baf640077d6794c0b33bb976f94b86c532barmvixl LoadStoreExclusiveFixed = 0x08000000, 9414a102baf640077d6794c0b33bb976f94b86c532barmvixl LoadStoreExclusiveFMask = 0x3F000000, 9424a102baf640077d6794c0b33bb976f94b86c532barmvixl LoadStoreExclusiveMask = 0xFFE08000, 9434a102baf640077d6794c0b33bb976f94b86c532barmvixl STXRB_w = LoadStoreExclusiveFixed | 0x00000000, 9444a102baf640077d6794c0b33bb976f94b86c532barmvixl STXRH_w = LoadStoreExclusiveFixed | 0x40000000, 9454a102baf640077d6794c0b33bb976f94b86c532barmvixl STXR_w = LoadStoreExclusiveFixed | 0x80000000, 9464a102baf640077d6794c0b33bb976f94b86c532barmvixl STXR_x = LoadStoreExclusiveFixed | 0xC0000000, 9474a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXRB_w = LoadStoreExclusiveFixed | 0x00400000, 9484a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXRH_w = LoadStoreExclusiveFixed | 0x40400000, 9494a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXR_w = LoadStoreExclusiveFixed | 0x80400000, 9504a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXR_x = LoadStoreExclusiveFixed | 0xC0400000, 9514a102baf640077d6794c0b33bb976f94b86c532barmvixl STXP_w = LoadStoreExclusiveFixed | 0x80200000, 9524a102baf640077d6794c0b33bb976f94b86c532barmvixl STXP_x = LoadStoreExclusiveFixed | 0xC0200000, 9534a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXP_w = LoadStoreExclusiveFixed | 0x80600000, 9544a102baf640077d6794c0b33bb976f94b86c532barmvixl LDXP_x = LoadStoreExclusiveFixed | 0xC0600000, 9554a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXRB_w = LoadStoreExclusiveFixed | 0x00008000, 9564a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXRH_w = LoadStoreExclusiveFixed | 0x40008000, 9574a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXR_w = LoadStoreExclusiveFixed | 0x80008000, 9584a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXR_x = LoadStoreExclusiveFixed | 0xC0008000, 9594a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXRB_w = LoadStoreExclusiveFixed | 0x00408000, 9604a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXRH_w = LoadStoreExclusiveFixed | 0x40408000, 9614a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXR_w = LoadStoreExclusiveFixed | 0x80408000, 9624a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXR_x = LoadStoreExclusiveFixed | 0xC0408000, 9634a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXP_w = LoadStoreExclusiveFixed | 0x80208000, 9644a102baf640077d6794c0b33bb976f94b86c532barmvixl STLXP_x = LoadStoreExclusiveFixed | 0xC0208000, 9654a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXP_w = LoadStoreExclusiveFixed | 0x80608000, 9664a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAXP_x = LoadStoreExclusiveFixed | 0xC0608000, 9674a102baf640077d6794c0b33bb976f94b86c532barmvixl STLRB_w = LoadStoreExclusiveFixed | 0x00808000, 9684a102baf640077d6794c0b33bb976f94b86c532barmvixl STLRH_w = LoadStoreExclusiveFixed | 0x40808000, 9694a102baf640077d6794c0b33bb976f94b86c532barmvixl STLR_w = LoadStoreExclusiveFixed | 0x80808000, 9704a102baf640077d6794c0b33bb976f94b86c532barmvixl STLR_x = LoadStoreExclusiveFixed | 0xC0808000, 9714a102baf640077d6794c0b33bb976f94b86c532barmvixl LDARB_w = LoadStoreExclusiveFixed | 0x00C08000, 9724a102baf640077d6794c0b33bb976f94b86c532barmvixl LDARH_w = LoadStoreExclusiveFixed | 0x40C08000, 9734a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAR_w = LoadStoreExclusiveFixed | 0x80C08000, 9744a102baf640077d6794c0b33bb976f94b86c532barmvixl LDAR_x = LoadStoreExclusiveFixed | 0xC0C08000 9754a102baf640077d6794c0b33bb976f94b86c532barmvixl}; 9764a102baf640077d6794c0b33bb976f94b86c532barmvixl 977ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conditional compare. 978ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ConditionalCompareOp { 979ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareMask = 0x60000000, 980ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMN = 0x20000000, 981ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMP = 0x60000000 982ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 983ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 984ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conditional compare register. 985ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ConditionalCompareRegisterOp { 986ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareRegisterFixed = 0x1A400000, 987ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareRegisterFMask = 0x1FE00800, 988ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareRegisterMask = 0xFFE00C10, 989ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMN_w = ConditionalCompareRegisterFixed | CCMN, 990ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMN_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMN, 991ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMP_w = ConditionalCompareRegisterFixed | CCMP, 992ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMP_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMP 993ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 994ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 995ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conditional compare immediate. 996ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ConditionalCompareImmediateOp { 997ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareImmediateFixed = 0x1A400800, 998ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareImmediateFMask = 0x1FE00800, 999ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalCompareImmediateMask = 0xFFE00C10, 1000ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMN_w_imm = ConditionalCompareImmediateFixed | CCMN, 1001ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMN_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMN, 1002ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMP_w_imm = ConditionalCompareImmediateFixed | CCMP, 1003ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CCMP_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMP 1004ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1005ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1006ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conditional select. 1007ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum ConditionalSelectOp { 1008ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalSelectFixed = 0x1A800000, 1009ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalSelectFMask = 0x1FE00000, 1010ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl ConditionalSelectMask = 0xFFE00C00, 1011ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSEL_w = ConditionalSelectFixed | 0x00000000, 1012ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSEL_x = ConditionalSelectFixed | 0x80000000, 1013ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSEL = CSEL_w, 1014ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINC_w = ConditionalSelectFixed | 0x00000400, 1015ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINC_x = ConditionalSelectFixed | 0x80000400, 1016ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINC = CSINC_w, 1017ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINV_w = ConditionalSelectFixed | 0x40000000, 1018ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINV_x = ConditionalSelectFixed | 0xC0000000, 1019ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSINV = CSINV_w, 1020ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSNEG_w = ConditionalSelectFixed | 0x40000400, 1021ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSNEG_x = ConditionalSelectFixed | 0xC0000400, 1022ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CSNEG = CSNEG_w 1023ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1024ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1025ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Data processing 1 source. 1026ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum DataProcessing1SourceOp { 1027ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing1SourceFixed = 0x5AC00000, 1028ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing1SourceFMask = 0x5FE00000, 1029ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing1SourceMask = 0xFFFFFC00, 1030ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl RBIT = DataProcessing1SourceFixed | 0x00000000, 1031ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl RBIT_w = RBIT, 1032ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl RBIT_x = RBIT | SixtyFourBits, 1033ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV16 = DataProcessing1SourceFixed | 0x00000400, 1034ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV16_w = REV16, 1035ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV16_x = REV16 | SixtyFourBits, 1036ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV = DataProcessing1SourceFixed | 0x00000800, 1037ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV_w = REV, 1038ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV32_x = REV | SixtyFourBits, 1039ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl REV_x = DataProcessing1SourceFixed | SixtyFourBits | 0x00000C00, 1040ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLZ = DataProcessing1SourceFixed | 0x00001000, 1041ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLZ_w = CLZ, 1042ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLZ_x = CLZ | SixtyFourBits, 1043ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLS = DataProcessing1SourceFixed | 0x00001400, 1044ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLS_w = CLS, 1045ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl CLS_x = CLS | SixtyFourBits 1046ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1047ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1048ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Data processing 2 source. 1049ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum DataProcessing2SourceOp { 1050ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing2SourceFixed = 0x1AC00000, 1051ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing2SourceFMask = 0x5FE00000, 1052ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing2SourceMask = 0xFFE0FC00, 1053578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UDIV_w = DataProcessing2SourceFixed | 0x00000800, 1054578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UDIV_x = DataProcessing2SourceFixed | 0x80000800, 1055578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UDIV = UDIV_w, 1056578645f14e122d2b87d907e298cda7e7d0babf1farmvixl SDIV_w = DataProcessing2SourceFixed | 0x00000C00, 1057578645f14e122d2b87d907e298cda7e7d0babf1farmvixl SDIV_x = DataProcessing2SourceFixed | 0x80000C00, 1058578645f14e122d2b87d907e298cda7e7d0babf1farmvixl SDIV = SDIV_w, 1059578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSLV_w = DataProcessing2SourceFixed | 0x00002000, 1060578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSLV_x = DataProcessing2SourceFixed | 0x80002000, 1061578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSLV = LSLV_w, 1062578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSRV_w = DataProcessing2SourceFixed | 0x00002400, 1063578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSRV_x = DataProcessing2SourceFixed | 0x80002400, 1064578645f14e122d2b87d907e298cda7e7d0babf1farmvixl LSRV = LSRV_w, 1065578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ASRV_w = DataProcessing2SourceFixed | 0x00002800, 1066578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ASRV_x = DataProcessing2SourceFixed | 0x80002800, 1067578645f14e122d2b87d907e298cda7e7d0babf1farmvixl ASRV = ASRV_w, 1068578645f14e122d2b87d907e298cda7e7d0babf1farmvixl RORV_w = DataProcessing2SourceFixed | 0x00002C00, 1069578645f14e122d2b87d907e298cda7e7d0babf1farmvixl RORV_x = DataProcessing2SourceFixed | 0x80002C00, 1070578645f14e122d2b87d907e298cda7e7d0babf1farmvixl RORV = RORV_w, 1071578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32B = DataProcessing2SourceFixed | 0x00004000, 1072578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32H = DataProcessing2SourceFixed | 0x00004400, 1073578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32W = DataProcessing2SourceFixed | 0x00004800, 1074578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32X = DataProcessing2SourceFixed | SixtyFourBits | 0x00004C00, 1075578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32CB = DataProcessing2SourceFixed | 0x00005000, 1076578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32CH = DataProcessing2SourceFixed | 0x00005400, 1077578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32CW = DataProcessing2SourceFixed | 0x00005800, 1078578645f14e122d2b87d907e298cda7e7d0babf1farmvixl CRC32CX = DataProcessing2SourceFixed | SixtyFourBits | 0x00005C00 1079ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1080ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1081ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Data processing 3 source. 1082ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum DataProcessing3SourceOp { 1083ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing3SourceFixed = 0x1B000000, 1084ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing3SourceFMask = 0x1F000000, 1085ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl DataProcessing3SourceMask = 0xFFE08000, 1086ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MADD_w = DataProcessing3SourceFixed | 0x00000000, 1087ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MADD_x = DataProcessing3SourceFixed | 0x80000000, 1088ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MADD = MADD_w, 1089ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MSUB_w = DataProcessing3SourceFixed | 0x00008000, 1090ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MSUB_x = DataProcessing3SourceFixed | 0x80008000, 1091ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl MSUB = MSUB_w, 1092ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SMADDL_x = DataProcessing3SourceFixed | 0x80200000, 1093ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SMSUBL_x = DataProcessing3SourceFixed | 0x80208000, 1094ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SMULH_x = DataProcessing3SourceFixed | 0x80400000, 1095ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UMADDL_x = DataProcessing3SourceFixed | 0x80A00000, 1096ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UMSUBL_x = DataProcessing3SourceFixed | 0x80A08000, 1097ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UMULH_x = DataProcessing3SourceFixed | 0x80C00000 1098ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1099ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1100ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point compare. 1101ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPCompareOp { 1102ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPCompareFixed = 0x1E202000, 1103ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPCompareFMask = 0x5F203C00, 1104ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPCompareMask = 0xFFE0FC1F, 1105ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP_s = FPCompareFixed | 0x00000000, 1106ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP_d = FPCompareFixed | FP64 | 0x00000000, 1107ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP = FCMP_s, 1108ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP_s_zero = FPCompareFixed | 0x00000008, 1109ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP_d_zero = FPCompareFixed | FP64 | 0x00000008, 1110ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMP_zero = FCMP_s_zero, 1111ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMPE_s = FPCompareFixed | 0x00000010, 1112ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMPE_d = FPCompareFixed | FP64 | 0x00000010, 11136e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl FCMPE = FCMPE_s, 1114ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCMPE_s_zero = FPCompareFixed | 0x00000018, 11156e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl FCMPE_d_zero = FPCompareFixed | FP64 | 0x00000018, 11166e2c8275d5f34a531fe1eef7a7aa877601be8558armvixl FCMPE_zero = FCMPE_s_zero 1117ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1118ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1119ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point conditional compare. 1120ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPConditionalCompareOp { 1121ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalCompareFixed = 0x1E200400, 1122ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalCompareFMask = 0x5F200C00, 1123ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalCompareMask = 0xFFE00C10, 1124ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMP_s = FPConditionalCompareFixed | 0x00000000, 1125ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMP_d = FPConditionalCompareFixed | FP64 | 0x00000000, 1126ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMP = FCCMP_s, 1127ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMPE_s = FPConditionalCompareFixed | 0x00000010, 1128ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMPE_d = FPConditionalCompareFixed | FP64 | 0x00000010, 1129ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCCMPE = FCCMPE_s 1130ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1131ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1132ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point conditional select. 1133ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPConditionalSelectOp { 1134ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalSelectFixed = 0x1E200C00, 1135ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalSelectFMask = 0x5F200C00, 1136ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPConditionalSelectMask = 0xFFE00C00, 1137ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCSEL_s = FPConditionalSelectFixed | 0x00000000, 1138ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCSEL_d = FPConditionalSelectFixed | FP64 | 0x00000000, 1139ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCSEL = FCSEL_s 1140ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1141ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1142ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point immediate. 1143ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPImmediateOp { 1144ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPImmediateFixed = 0x1E201000, 1145ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPImmediateFMask = 0x5F201C00, 1146ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPImmediateMask = 0xFFE01C00, 1147ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_s_imm = FPImmediateFixed | 0x00000000, 1148ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_d_imm = FPImmediateFixed | FP64 | 0x00000000 1149ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1150ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1151ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point data processing 1 source. 1152ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPDataProcessing1SourceOp { 1153ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing1SourceFixed = 0x1E204000, 1154ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing1SourceFMask = 0x5F207C00, 1155ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing1SourceMask = 0xFFFFFC00, 1156ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_s = FPDataProcessing1SourceFixed | 0x00000000, 1157ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_d = FPDataProcessing1SourceFixed | FP64 | 0x00000000, 1158ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV = FMOV_s, 1159ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FABS_s = FPDataProcessing1SourceFixed | 0x00008000, 1160ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FABS_d = FPDataProcessing1SourceFixed | FP64 | 0x00008000, 1161ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FABS = FABS_s, 1162ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNEG_s = FPDataProcessing1SourceFixed | 0x00010000, 1163ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNEG_d = FPDataProcessing1SourceFixed | FP64 | 0x00010000, 1164ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNEG = FNEG_s, 1165ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSQRT_s = FPDataProcessing1SourceFixed | 0x00018000, 1166ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSQRT_d = FPDataProcessing1SourceFixed | FP64 | 0x00018000, 1167ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSQRT = FSQRT_s, 1168ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVT_ds = FPDataProcessing1SourceFixed | 0x00028000, 1169ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVT_sd = FPDataProcessing1SourceFixed | FP64 | 0x00020000, 11705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FCVT_hs = FPDataProcessing1SourceFixed | 0x00038000, 11715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FCVT_hd = FPDataProcessing1SourceFixed | FP64 | 0x00038000, 11725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FCVT_sh = FPDataProcessing1SourceFixed | 0x00C20000, 11735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FCVT_dh = FPDataProcessing1SourceFixed | 0x00C28000, 1174ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTN_s = FPDataProcessing1SourceFixed | 0x00040000, 1175ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTN_d = FPDataProcessing1SourceFixed | FP64 | 0x00040000, 1176ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTN = FRINTN_s, 1177ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTP_s = FPDataProcessing1SourceFixed | 0x00048000, 1178ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTP_d = FPDataProcessing1SourceFixed | FP64 | 0x00048000, 1179f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTP = FRINTP_s, 1180ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTM_s = FPDataProcessing1SourceFixed | 0x00050000, 1181ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTM_d = FPDataProcessing1SourceFixed | FP64 | 0x00050000, 1182f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTM = FRINTM_s, 1183ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTZ_s = FPDataProcessing1SourceFixed | 0x00058000, 1184ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTZ_d = FPDataProcessing1SourceFixed | FP64 | 0x00058000, 1185ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTZ = FRINTZ_s, 1186ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTA_s = FPDataProcessing1SourceFixed | 0x00060000, 1187ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTA_d = FPDataProcessing1SourceFixed | FP64 | 0x00060000, 1188f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTA = FRINTA_s, 1189ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTX_s = FPDataProcessing1SourceFixed | 0x00070000, 1190ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTX_d = FPDataProcessing1SourceFixed | FP64 | 0x00070000, 1191f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTX = FRINTX_s, 1192ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FRINTI_s = FPDataProcessing1SourceFixed | 0x00078000, 1193f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTI_d = FPDataProcessing1SourceFixed | FP64 | 0x00078000, 1194f37fdc0b307fc66239b8b754b0465d36bc0f8aedarmvixl FRINTI = FRINTI_s 1195ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1196ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1197ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point data processing 2 source. 1198ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPDataProcessing2SourceOp { 1199ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing2SourceFixed = 0x1E200800, 1200ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing2SourceFMask = 0x5F200C00, 1201ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing2SourceMask = 0xFFE0FC00, 1202ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMUL = FPDataProcessing2SourceFixed | 0x00000000, 1203ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMUL_s = FMUL, 1204ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMUL_d = FMUL | FP64, 1205ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FDIV = FPDataProcessing2SourceFixed | 0x00001000, 1206ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FDIV_s = FDIV, 1207ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FDIV_d = FDIV | FP64, 1208ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FADD = FPDataProcessing2SourceFixed | 0x00002000, 1209ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FADD_s = FADD, 1210ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FADD_d = FADD | FP64, 1211ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSUB = FPDataProcessing2SourceFixed | 0x00003000, 1212ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSUB_s = FSUB, 1213ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FSUB_d = FSUB | FP64, 1214ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAX = FPDataProcessing2SourceFixed | 0x00004000, 1215ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAX_s = FMAX, 1216ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAX_d = FMAX | FP64, 1217ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMIN = FPDataProcessing2SourceFixed | 0x00005000, 1218ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMIN_s = FMIN, 1219ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMIN_d = FMIN | FP64, 1220ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAXNM = FPDataProcessing2SourceFixed | 0x00006000, 1221ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAXNM_s = FMAXNM, 1222ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMAXNM_d = FMAXNM | FP64, 1223ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMINNM = FPDataProcessing2SourceFixed | 0x00007000, 1224ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMINNM_s = FMINNM, 1225ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMINNM_d = FMINNM | FP64, 1226ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMUL = FPDataProcessing2SourceFixed | 0x00008000, 1227ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMUL_s = FNMUL, 1228ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMUL_d = FNMUL | FP64 1229ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1230ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1231ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Floating point data processing 3 source. 1232ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPDataProcessing3SourceOp { 1233ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing3SourceFixed = 0x1F000000, 1234ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing3SourceFMask = 0x5F000000, 1235ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPDataProcessing3SourceMask = 0xFFE08000, 1236ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMADD_s = FPDataProcessing3SourceFixed | 0x00000000, 1237ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMSUB_s = FPDataProcessing3SourceFixed | 0x00008000, 1238ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMADD_s = FPDataProcessing3SourceFixed | 0x00200000, 1239ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMSUB_s = FPDataProcessing3SourceFixed | 0x00208000, 1240ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMADD_d = FPDataProcessing3SourceFixed | 0x00400000, 1241ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMSUB_d = FPDataProcessing3SourceFixed | 0x00408000, 1242ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMADD_d = FPDataProcessing3SourceFixed | 0x00600000, 1243ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FNMSUB_d = FPDataProcessing3SourceFixed | 0x00608000 1244ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1245ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1246ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conversion between floating point and integer. 1247ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPIntegerConvertOp { 1248ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPIntegerConvertFixed = 0x1E200000, 1249ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPIntegerConvertFMask = 0x5F20FC00, 1250ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPIntegerConvertMask = 0xFFFFFC00, 1251ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNS = FPIntegerConvertFixed | 0x00000000, 1252ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNS_ws = FCVTNS, 1253ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNS_xs = FCVTNS | SixtyFourBits, 1254ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNS_wd = FCVTNS | FP64, 1255ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNS_xd = FCVTNS | SixtyFourBits | FP64, 1256ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNU = FPIntegerConvertFixed | 0x00010000, 1257ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNU_ws = FCVTNU, 1258ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNU_xs = FCVTNU | SixtyFourBits, 1259ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNU_wd = FCVTNU | FP64, 1260ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTNU_xd = FCVTNU | SixtyFourBits | FP64, 1261ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPS = FPIntegerConvertFixed | 0x00080000, 1262ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPS_ws = FCVTPS, 1263ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPS_xs = FCVTPS | SixtyFourBits, 1264ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPS_wd = FCVTPS | FP64, 1265ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPS_xd = FCVTPS | SixtyFourBits | FP64, 1266ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPU = FPIntegerConvertFixed | 0x00090000, 1267ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPU_ws = FCVTPU, 1268ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPU_xs = FCVTPU | SixtyFourBits, 1269ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPU_wd = FCVTPU | FP64, 1270ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTPU_xd = FCVTPU | SixtyFourBits | FP64, 1271ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMS = FPIntegerConvertFixed | 0x00100000, 1272ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMS_ws = FCVTMS, 1273ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMS_xs = FCVTMS | SixtyFourBits, 1274ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMS_wd = FCVTMS | FP64, 1275ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMS_xd = FCVTMS | SixtyFourBits | FP64, 1276ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMU = FPIntegerConvertFixed | 0x00110000, 1277ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMU_ws = FCVTMU, 1278ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMU_xs = FCVTMU | SixtyFourBits, 1279ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMU_wd = FCVTMU | FP64, 1280ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTMU_xd = FCVTMU | SixtyFourBits | FP64, 1281ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS = FPIntegerConvertFixed | 0x00180000, 1282ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_ws = FCVTZS, 1283ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_xs = FCVTZS | SixtyFourBits, 1284ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_wd = FCVTZS | FP64, 1285ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_xd = FCVTZS | SixtyFourBits | FP64, 1286ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU = FPIntegerConvertFixed | 0x00190000, 1287ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_ws = FCVTZU, 1288ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_xs = FCVTZU | SixtyFourBits, 1289ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_wd = FCVTZU | FP64, 1290ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_xd = FCVTZU | SixtyFourBits | FP64, 1291ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF = FPIntegerConvertFixed | 0x00020000, 1292ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_sw = SCVTF, 1293ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_sx = SCVTF | SixtyFourBits, 1294ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_dw = SCVTF | FP64, 1295ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_dx = SCVTF | SixtyFourBits | FP64, 1296ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF = FPIntegerConvertFixed | 0x00030000, 1297ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_sw = UCVTF, 1298ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_sx = UCVTF | SixtyFourBits, 1299ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_dw = UCVTF | FP64, 1300ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_dx = UCVTF | SixtyFourBits | FP64, 1301ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAS = FPIntegerConvertFixed | 0x00040000, 1302ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAS_ws = FCVTAS, 1303ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAS_xs = FCVTAS | SixtyFourBits, 1304ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAS_wd = FCVTAS | FP64, 1305ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAS_xd = FCVTAS | SixtyFourBits | FP64, 1306ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAU = FPIntegerConvertFixed | 0x00050000, 1307ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAU_ws = FCVTAU, 1308ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAU_xs = FCVTAU | SixtyFourBits, 1309ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAU_wd = FCVTAU | FP64, 1310ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTAU_xd = FCVTAU | SixtyFourBits | FP64, 1311ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_ws = FPIntegerConvertFixed | 0x00060000, 1312ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_sw = FPIntegerConvertFixed | 0x00070000, 1313ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FMOV_xd = FMOV_ws | SixtyFourBits | FP64, 13145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FMOV_dx = FMOV_sw | SixtyFourBits | FP64, 13155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FMOV_d1_x = FPIntegerConvertFixed | SixtyFourBits | 0x008F0000, 13165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl FMOV_x_d1 = FPIntegerConvertFixed | SixtyFourBits | 0x008E0000 1317ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1318ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 1319ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl// Conversion between fixed point and floating point. 1320ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixlenum FPFixedPointConvertOp { 1321ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPFixedPointConvertFixed = 0x1E000000, 1322ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPFixedPointConvertFMask = 0x5F200000, 1323ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FPFixedPointConvertMask = 0xFFFF0000, 1324ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_fixed = FPFixedPointConvertFixed | 0x00180000, 1325ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_ws_fixed = FCVTZS_fixed, 1326ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_xs_fixed = FCVTZS_fixed | SixtyFourBits, 1327ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_wd_fixed = FCVTZS_fixed | FP64, 1328ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZS_xd_fixed = FCVTZS_fixed | SixtyFourBits | FP64, 1329ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_fixed = FPFixedPointConvertFixed | 0x00190000, 1330ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_ws_fixed = FCVTZU_fixed, 1331ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_xs_fixed = FCVTZU_fixed | SixtyFourBits, 1332ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_wd_fixed = FCVTZU_fixed | FP64, 1333ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl FCVTZU_xd_fixed = FCVTZU_fixed | SixtyFourBits | FP64, 1334ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_fixed = FPFixedPointConvertFixed | 0x00020000, 1335ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_sw_fixed = SCVTF_fixed, 1336ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_sx_fixed = SCVTF_fixed | SixtyFourBits, 1337ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_dw_fixed = SCVTF_fixed | FP64, 1338ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl SCVTF_dx_fixed = SCVTF_fixed | SixtyFourBits | FP64, 1339ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_fixed = FPFixedPointConvertFixed | 0x00030000, 1340ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_sw_fixed = UCVTF_fixed, 1341ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_sx_fixed = UCVTF_fixed | SixtyFourBits, 1342ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_dw_fixed = UCVTF_fixed | FP64, 1343ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl UCVTF_dx_fixed = UCVTF_fixed | SixtyFourBits | FP64 1344ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 1345ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 13465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// Crypto - two register SHA. 13475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum Crypto2RegSHAOp { 13485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl Crypto2RegSHAFixed = 0x5E280800, 13495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl Crypto2RegSHAFMask = 0xFF3E0C00 13505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 13515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 13525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// Crypto - three register SHA. 13535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum Crypto3RegSHAOp { 13545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl Crypto3RegSHAFixed = 0x5E000000, 13555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl Crypto3RegSHAFMask = 0xFF208C00 13565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 13575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 13585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// Crypto - AES. 13595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum CryptoAESOp { 13605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl CryptoAESFixed = 0x4E280800, 13615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl CryptoAESFMask = 0xFF3E0C00 13625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 13635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 13645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON instructions with two register operands. 13655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEON2RegMiscOp { 13665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscFixed = 0x0E200800, 13675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscFMask = 0x9F3E0C00, 13685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscMask = 0xBF3FFC00, 13695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscUBit = 0x20000000, 13705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_REV64 = NEON2RegMiscFixed | 0x00000000, 13715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_REV32 = NEON2RegMiscFixed | 0x20000000, 13725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_REV16 = NEON2RegMiscFixed | 0x00001000, 13735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDLP = NEON2RegMiscFixed | 0x00002000, 13745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDLP = NEON_SADDLP | NEON2RegMiscUBit, 13755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUQADD = NEON2RegMiscFixed | 0x00003000, 13765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USQADD = NEON_SUQADD | NEON2RegMiscUBit, 13775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CLS = NEON2RegMiscFixed | 0x00004000, 13785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CLZ = NEON2RegMiscFixed | 0x20004000, 13795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CNT = NEON2RegMiscFixed | 0x00005000, 13805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RBIT_NOT = NEON2RegMiscFixed | 0x20005000, 13815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADALP = NEON2RegMiscFixed | 0x00006000, 13825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADALP = NEON_SADALP | NEON2RegMiscUBit, 13835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQABS = NEON2RegMiscFixed | 0x00007000, 13845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQNEG = NEON2RegMiscFixed | 0x20007000, 13855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGT_zero = NEON2RegMiscFixed | 0x00008000, 13865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGE_zero = NEON2RegMiscFixed | 0x20008000, 13875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMEQ_zero = NEON2RegMiscFixed | 0x00009000, 13885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMLE_zero = NEON2RegMiscFixed | 0x20009000, 13895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMLT_zero = NEON2RegMiscFixed | 0x0000A000, 13905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ABS = NEON2RegMiscFixed | 0x0000B000, 13915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_NEG = NEON2RegMiscFixed | 0x2000B000, 13925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_XTN = NEON2RegMiscFixed | 0x00012000, 13935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQXTUN = NEON2RegMiscFixed | 0x20012000, 13945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SHLL = NEON2RegMiscFixed | 0x20013000, 13955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQXTN = NEON2RegMiscFixed | 0x00014000, 13965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQXTN = NEON_SQXTN | NEON2RegMiscUBit, 13975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 13985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscOpcode = 0x0001F000, 13995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RBIT_NOT_opcode = NEON_RBIT_NOT & NEON2RegMiscOpcode, 14005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_NEG_opcode = NEON_NEG & NEON2RegMiscOpcode, 14015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_XTN_opcode = NEON_XTN & NEON2RegMiscOpcode, 14025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQXTN_opcode = NEON_UQXTN & NEON2RegMiscOpcode, 14035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 14045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // These instructions use only one bit of the size field. The other bit is 14055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // used to distinguish between instructions. 14065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON2RegMiscFPMask = NEON2RegMiscMask | 0x00800000, 14075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FABS = NEON2RegMiscFixed | 0x0080F000, 14085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FNEG = NEON2RegMiscFixed | 0x2080F000, 14095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTN = NEON2RegMiscFixed | 0x00016000, 14105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTXN = NEON2RegMiscFixed | 0x20016000, 14115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTL = NEON2RegMiscFixed | 0x00017000, 14125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTN = NEON2RegMiscFixed | 0x00018000, 14135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTA = NEON2RegMiscFixed | 0x20018000, 14145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTP = NEON2RegMiscFixed | 0x00818000, 14155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTM = NEON2RegMiscFixed | 0x00019000, 14165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTX = NEON2RegMiscFixed | 0x20019000, 14175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTZ = NEON2RegMiscFixed | 0x00819000, 14185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRINTI = NEON2RegMiscFixed | 0x20819000, 14195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTNS = NEON2RegMiscFixed | 0x0001A000, 14205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTNU = NEON_FCVTNS | NEON2RegMiscUBit, 14215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTPS = NEON2RegMiscFixed | 0x0081A000, 14225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTPU = NEON_FCVTPS | NEON2RegMiscUBit, 14235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTMS = NEON2RegMiscFixed | 0x0001B000, 14245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTMU = NEON_FCVTMS | NEON2RegMiscUBit, 14255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZS = NEON2RegMiscFixed | 0x0081B000, 14265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZU = NEON_FCVTZS | NEON2RegMiscUBit, 14275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTAS = NEON2RegMiscFixed | 0x0001C000, 14285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTAU = NEON_FCVTAS | NEON2RegMiscUBit, 14295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FSQRT = NEON2RegMiscFixed | 0x2081F000, 14305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SCVTF = NEON2RegMiscFixed | 0x0001D000, 14315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UCVTF = NEON_SCVTF | NEON2RegMiscUBit, 14325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URSQRTE = NEON2RegMiscFixed | 0x2081C000, 14335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URECPE = NEON2RegMiscFixed | 0x0081C000, 14345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRSQRTE = NEON2RegMiscFixed | 0x2081D000, 14355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRECPE = NEON2RegMiscFixed | 0x0081D000, 14365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGT_zero = NEON2RegMiscFixed | 0x0080C000, 14375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGE_zero = NEON2RegMiscFixed | 0x2080C000, 14385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMEQ_zero = NEON2RegMiscFixed | 0x0080D000, 14395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMLE_zero = NEON2RegMiscFixed | 0x2080D000, 14405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMLT_zero = NEON2RegMiscFixed | 0x0080E000, 14415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 14425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTL_opcode = NEON_FCVTL & NEON2RegMiscOpcode, 14435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTN_opcode = NEON_FCVTN & NEON2RegMiscOpcode 14445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 14455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 14465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON instructions with three same-type operands. 14475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEON3SameOp { 14485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameFixed = 0x0E200400, 14495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameFMask = 0x9F200400, 14500f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON3SameMask = 0xBF20FC00, 14510f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON3SameUBit = 0x20000000, 14525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADD = NEON3SameFixed | 0x00008000, 14535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADDP = NEON3SameFixed | 0x0000B800, 14545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SHADD = NEON3SameFixed | 0x00000000, 14555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SHSUB = NEON3SameFixed | 0x00002000, 14565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRHADD = NEON3SameFixed | 0x00001000, 14575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMEQ = NEON3SameFixed | NEON3SameUBit | 0x00008800, 14585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGE = NEON3SameFixed | 0x00003800, 14595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGT = NEON3SameFixed | 0x00003000, 14605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMHI = NEON3SameFixed | NEON3SameUBit | NEON_CMGT, 14615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMHS = NEON3SameFixed | NEON3SameUBit | NEON_CMGE, 14625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMTST = NEON3SameFixed | 0x00008800, 14635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MLA = NEON3SameFixed | 0x00009000, 14645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MLS = NEON3SameFixed | 0x20009000, 14655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MUL = NEON3SameFixed | 0x00009800, 14665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_PMUL = NEON3SameFixed | 0x20009800, 14675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRSHL = NEON3SameFixed | 0x00005000, 14685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHL = NEON3SameFixed | 0x00004800, 14695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRSHL = NEON3SameFixed | 0x00005800, 14705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSHL = NEON3SameFixed | 0x00004000, 14715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMAX = NEON3SameFixed | 0x00006000, 14725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMAXP = NEON3SameFixed | 0x0000A000, 14735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMIN = NEON3SameFixed | 0x00006800, 14745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMINP = NEON3SameFixed | 0x0000A800, 14755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABD = NEON3SameFixed | 0x00007000, 14765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABA = NEON3SameFixed | 0x00007800, 14775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABD = NEON3SameFixed | NEON3SameUBit | NEON_SABD, 14785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABA = NEON3SameFixed | NEON3SameUBit | NEON_SABA, 14795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQADD = NEON3SameFixed | 0x00000800, 14805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSUB = NEON3SameFixed | 0x00002800, 14815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUB = NEON3SameFixed | NEON3SameUBit | 0x00008000, 14825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UHADD = NEON3SameFixed | NEON3SameUBit | NEON_SHADD, 14835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UHSUB = NEON3SameFixed | NEON3SameUBit | NEON_SHSUB, 14845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URHADD = NEON3SameFixed | NEON3SameUBit | NEON_SRHADD, 14855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMAX = NEON3SameFixed | NEON3SameUBit | NEON_SMAX, 14865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMAXP = NEON3SameFixed | NEON3SameUBit | NEON_SMAXP, 14875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMIN = NEON3SameFixed | NEON3SameUBit | NEON_SMIN, 14885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMINP = NEON3SameFixed | NEON3SameUBit | NEON_SMINP, 14895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URSHL = NEON3SameFixed | NEON3SameUBit | NEON_SRSHL, 14905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQADD = NEON3SameFixed | NEON3SameUBit | NEON_SQADD, 14915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQRSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQRSHL, 14925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQSHL, 14935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSUB = NEON3SameFixed | NEON3SameUBit | NEON_SQSUB, 14945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USHL = NEON3SameFixed | NEON3SameUBit | NEON_SSHL, 14955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULH = NEON3SameFixed | 0x0000B000, 14965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRDMULH = NEON3SameFixed | 0x2000B000, 14975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 14985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // NEON floating point instructions with three same-type operands. 14995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameFPFixed = NEON3SameFixed | 0x0000C000, 15005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameFPFMask = NEON3SameFMask | 0x0000C000, 15015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameFPMask = NEON3SameMask | 0x00800000, 15025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FADD = NEON3SameFixed | 0x0000D000, 15035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FSUB = NEON3SameFixed | 0x0080D000, 15045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMUL = NEON3SameFixed | 0x2000D800, 15055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FDIV = NEON3SameFixed | 0x2000F800, 15065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAX = NEON3SameFixed | 0x0000F000, 15075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXNM = NEON3SameFixed | 0x0000C000, 15085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXP = NEON3SameFixed | 0x2000F000, 15095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXNMP = NEON3SameFixed | 0x2000C000, 15105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMIN = NEON3SameFixed | 0x0080F000, 15115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINNM = NEON3SameFixed | 0x0080C000, 15125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINP = NEON3SameFixed | 0x2080F000, 15135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINNMP = NEON3SameFixed | 0x2080C000, 15145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLA = NEON3SameFixed | 0x0000C800, 15155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLS = NEON3SameFixed | 0x0080C800, 15165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMULX = NEON3SameFixed | 0x0000D800, 15175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRECPS = NEON3SameFixed | 0x0000F800, 15185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRSQRTS = NEON3SameFixed | 0x0080F800, 15195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FABD = NEON3SameFixed | 0x2080D000, 15205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FADDP = NEON3SameFixed | 0x2000D000, 15215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMEQ = NEON3SameFixed | 0x0000E000, 15225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGE = NEON3SameFixed | 0x2000E000, 15235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGT = NEON3SameFixed | 0x2080E000, 15245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FACGE = NEON3SameFixed | 0x2000E800, 15255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FACGT = NEON3SameFixed | 0x2080E800, 15265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 15275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // NEON logical instructions with three same-type operands. 15285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameLogicalFixed = NEON3SameFixed | 0x00001800, 15295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameLogicalFMask = NEON3SameFMask | 0x0000F800, 15305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameLogicalMask = 0xBFE0FC00, 15315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3SameLogicalFormatMask = NEON_Q, 15325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_AND = NEON3SameLogicalFixed | 0x00000000, 15335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ORR = NEON3SameLogicalFixed | 0x00A00000, 15345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ORN = NEON3SameLogicalFixed | 0x00C00000, 15355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_EOR = NEON3SameLogicalFixed | 0x20000000, 15365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_BIC = NEON3SameLogicalFixed | 0x00400000, 15375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_BIF = NEON3SameLogicalFixed | 0x20C00000, 15385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_BIT = NEON3SameLogicalFixed | 0x20800000, 15395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_BSL = NEON3SameLogicalFixed | 0x20400000 15405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 15415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 15425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON instructions with three different-type operands. 15435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEON3DifferentOp { 15445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3DifferentFixed = 0x0E200000, 15455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3DifferentFMask = 0x9F200C00, 15465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON3DifferentMask = 0xFF20FC00, 15475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADDHN = NEON3DifferentFixed | 0x00004000, 15485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADDHN2 = NEON_ADDHN | NEON_Q, 15495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_PMULL = NEON3DifferentFixed | 0x0000E000, 15505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_PMULL2 = NEON_PMULL | NEON_Q, 15515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RADDHN = NEON3DifferentFixed | 0x20004000, 15525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RADDHN2 = NEON_RADDHN | NEON_Q, 15535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RSUBHN = NEON3DifferentFixed | 0x20006000, 15545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RSUBHN2 = NEON_RSUBHN | NEON_Q, 15555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABAL = NEON3DifferentFixed | 0x00005000, 15565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABAL2 = NEON_SABAL | NEON_Q, 15575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABDL = NEON3DifferentFixed | 0x00007000, 15585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SABDL2 = NEON_SABDL | NEON_Q, 15595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDL = NEON3DifferentFixed | 0x00000000, 15605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDL2 = NEON_SADDL | NEON_Q, 15615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDW = NEON3DifferentFixed | 0x00001000, 15625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDW2 = NEON_SADDW | NEON_Q, 15635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLAL = NEON3DifferentFixed | 0x00008000, 15645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLAL2 = NEON_SMLAL | NEON_Q, 15655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLSL = NEON3DifferentFixed | 0x0000A000, 15665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLSL2 = NEON_SMLSL | NEON_Q, 15675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMULL = NEON3DifferentFixed | 0x0000C000, 15685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMULL2 = NEON_SMULL | NEON_Q, 15695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSUBL = NEON3DifferentFixed | 0x00002000, 15705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSUBL2 = NEON_SSUBL | NEON_Q, 15715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSUBW = NEON3DifferentFixed | 0x00003000, 15725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSUBW2 = NEON_SSUBW | NEON_Q, 15735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLAL = NEON3DifferentFixed | 0x00009000, 15745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLAL2 = NEON_SQDMLAL | NEON_Q, 15755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLSL = NEON3DifferentFixed | 0x0000B000, 15765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLSL2 = NEON_SQDMLSL | NEON_Q, 15775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULL = NEON3DifferentFixed | 0x0000D000, 15785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULL2 = NEON_SQDMULL | NEON_Q, 15795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUBHN = NEON3DifferentFixed | 0x00006000, 15805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUBHN2 = NEON_SUBHN | NEON_Q, 15815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABAL = NEON_SABAL | NEON3SameUBit, 15825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABAL2 = NEON_UABAL | NEON_Q, 15835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABDL = NEON_SABDL | NEON3SameUBit, 15845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UABDL2 = NEON_UABDL | NEON_Q, 15855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDL = NEON_SADDL | NEON3SameUBit, 15865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDL2 = NEON_UADDL | NEON_Q, 15875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDW = NEON_SADDW | NEON3SameUBit, 15885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDW2 = NEON_UADDW | NEON_Q, 15895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLAL = NEON_SMLAL | NEON3SameUBit, 15905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLAL2 = NEON_UMLAL | NEON_Q, 15915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLSL = NEON_SMLSL | NEON3SameUBit, 15925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLSL2 = NEON_UMLSL | NEON_Q, 15935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMULL = NEON_SMULL | NEON3SameUBit, 15945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMULL2 = NEON_UMULL | NEON_Q, 15955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USUBL = NEON_SSUBL | NEON3SameUBit, 15965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USUBL2 = NEON_USUBL | NEON_Q, 15975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USUBW = NEON_SSUBW | NEON3SameUBit, 15985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USUBW2 = NEON_USUBW | NEON_Q 15995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON instructions operating across vectors. 16025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONAcrossLanesOp { 16035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesFixed = 0x0E300800, 16045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesFMask = 0x9F3E0C00, 16055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesMask = 0xBF3FFC00, 16065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADDV = NEONAcrossLanesFixed | 0x0001B000, 16075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SADDLV = NEONAcrossLanesFixed | 0x00003000, 16085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UADDLV = NEONAcrossLanesFixed | 0x20003000, 16095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMAXV = NEONAcrossLanesFixed | 0x0000A000, 16105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMINV = NEONAcrossLanesFixed | 0x0001A000, 16115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMAXV = NEONAcrossLanesFixed | 0x2000A000, 16125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMINV = NEONAcrossLanesFixed | 0x2001A000, 16135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // NEON floating point across instructions. 16155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesFPFixed = NEONAcrossLanesFixed | 0x0000C000, 16165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesFPFMask = NEONAcrossLanesFMask | 0x0000C000, 16175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONAcrossLanesFPMask = NEONAcrossLanesMask | 0x00800000, 16185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXV = NEONAcrossLanesFPFixed | 0x2000F000, 16205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINV = NEONAcrossLanesFPFixed | 0x2080F000, 16215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXNMV = NEONAcrossLanesFPFixed | 0x2000C000, 16225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINNMV = NEONAcrossLanesFPFixed | 0x2080C000 16235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON instructions with indexed element operand. 16265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONByIndexedElementOp { 16275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONByIndexedElementFixed = 0x0F000000, 16285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONByIndexedElementFMask = 0x9F000400, 16295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONByIndexedElementMask = 0xBF00F400, 16305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MUL_byelement = NEONByIndexedElementFixed | 0x00008000, 16315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MLA_byelement = NEONByIndexedElementFixed | 0x20000000, 16325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_MLS_byelement = NEONByIndexedElementFixed | 0x20004000, 16335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMULL_byelement = NEONByIndexedElementFixed | 0x0000A000, 16345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLAL_byelement = NEONByIndexedElementFixed | 0x00002000, 16355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMLSL_byelement = NEONByIndexedElementFixed | 0x00006000, 16365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMULL_byelement = NEONByIndexedElementFixed | 0x2000A000, 16375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLAL_byelement = NEONByIndexedElementFixed | 0x20002000, 16385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMLSL_byelement = NEONByIndexedElementFixed | 0x20006000, 16395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULL_byelement = NEONByIndexedElementFixed | 0x0000B000, 16405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLAL_byelement = NEONByIndexedElementFixed | 0x00003000, 16415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLSL_byelement = NEONByIndexedElementFixed | 0x00007000, 16425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULH_byelement = NEONByIndexedElementFixed | 0x0000C000, 16435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRDMULH_byelement = NEONByIndexedElementFixed | 0x0000D000, 16445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // Floating point instructions. 16465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONByIndexedElementFPFixed = NEONByIndexedElementFixed | 0x00800000, 16475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONByIndexedElementFPMask = NEONByIndexedElementMask | 0x00800000, 16485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLA_byelement = NEONByIndexedElementFPFixed | 0x00001000, 16495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLS_byelement = NEONByIndexedElementFPFixed | 0x00005000, 16505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMUL_byelement = NEONByIndexedElementFPFixed | 0x00009000, 16515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMULX_byelement = NEONByIndexedElementFPFixed | 0x20009000 16525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON register copy. 16555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONCopyOp { 16565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyFixed = 0x0E000400, 16575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyFMask = 0x9FE08400, 16585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyMask = 0x3FE08400, 16595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyInsElementMask = NEONCopyMask | 0x40000000, 16605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyInsGeneralMask = NEONCopyMask | 0x40007800, 16615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyDupElementMask = NEONCopyMask | 0x20007800, 16625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyDupGeneralMask = NEONCopyDupElementMask, 16635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopyUmovMask = NEONCopyMask | 0x20007800, 16645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONCopySmovMask = NEONCopyMask | 0x20007800, 16655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_INS_ELEMENT = NEONCopyFixed | 0x60000000, 16665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_INS_GENERAL = NEONCopyFixed | 0x40001800, 16675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_DUP_ELEMENT = NEONCopyFixed | 0x00000000, 16685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_DUP_GENERAL = NEONCopyFixed | 0x00000800, 16695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SMOV = NEONCopyFixed | 0x00002800, 16705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UMOV = NEONCopyFixed | 0x00003800 16715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON extract. 16745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONExtractOp { 16755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONExtractFixed = 0x2E000000, 16765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONExtractFMask = 0xBF208400, 16770f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEONExtractMask = 0xBFE08400, 16785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_EXT = NEONExtractFixed | 0x00000000 16795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreMultiOp { 16825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiL = 0x00400000, 16835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti1_1v = 0x00007000, 16845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti1_2v = 0x0000A000, 16855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti1_3v = 0x00006000, 16865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti1_4v = 0x00002000, 16875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti2 = 0x00008000, 16885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti3 = 0x00004000, 16895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMulti4 = 0x00000000 16905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 16915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 16925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON load/store multiple structures. 16935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreMultiStructOp { 16945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructFixed = 0x0C000000, 16955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructFMask = 0xBFBF0000, 16965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructMask = 0xBFFFF000, 16975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructStore = NEONLoadStoreMultiStructFixed, 16985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructLoad = NEONLoadStoreMultiStructFixed | 16995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiL, 17005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_1v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_1v, 17015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_2v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_2v, 17025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_3v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_3v, 17035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_4v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_4v, 17045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti2, 17055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti3, 17065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti4, 17075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_1v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_1v, 17085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_2v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_2v, 17095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_3v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_3v, 17105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_4v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_4v, 17115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti2, 17125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti3, 17135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti4 17145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 17155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 17165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON load/store multiple structures with post-index addressing. 17175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreMultiStructPostIndexOp { 17185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructPostIndexFixed = 0x0C800000, 17195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructPostIndexFMask = 0xBFA00000, 17205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructPostIndexMask = 0xBFE0F000, 17215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreMultiStructPostIndex = 0x00800000, 17225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_1v_post = NEON_LD1_1v | NEONLoadStoreMultiStructPostIndex, 17235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_2v_post = NEON_LD1_2v | NEONLoadStoreMultiStructPostIndex, 17245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_3v_post = NEON_LD1_3v | NEONLoadStoreMultiStructPostIndex, 17255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_4v_post = NEON_LD1_4v | NEONLoadStoreMultiStructPostIndex, 17265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_post = NEON_LD2 | NEONLoadStoreMultiStructPostIndex, 17275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_post = NEON_LD3 | NEONLoadStoreMultiStructPostIndex, 17285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_post = NEON_LD4 | NEONLoadStoreMultiStructPostIndex, 17295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_1v_post = NEON_ST1_1v | NEONLoadStoreMultiStructPostIndex, 17305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_2v_post = NEON_ST1_2v | NEONLoadStoreMultiStructPostIndex, 17315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_3v_post = NEON_ST1_3v | NEONLoadStoreMultiStructPostIndex, 17325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_4v_post = NEON_ST1_4v | NEONLoadStoreMultiStructPostIndex, 17335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_post = NEON_ST2 | NEONLoadStoreMultiStructPostIndex, 17345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_post = NEON_ST3 | NEONLoadStoreMultiStructPostIndex, 17355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_post = NEON_ST4 | NEONLoadStoreMultiStructPostIndex 17365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 17375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 17385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreSingleOp { 17395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle1 = 0x00000000, 17405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle2 = 0x00200000, 17415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle3 = 0x00002000, 17425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle4 = 0x00202000, 17435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleL = 0x00400000, 17445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle_b = 0x00000000, 17455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle_h = 0x00004000, 17465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle_s = 0x00008000, 17475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingle_d = 0x00008400, 17485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleAllLanes = 0x0000C000, 17495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleLenMask = 0x00202000 17505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 17515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 17525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON load/store single structure. 17535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreSingleStructOp { 17545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFixed = 0x0D000000, 17555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFMask = 0xBF9F0000, 17565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructMask = 0xBFFFE000, 17575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructStore = NEONLoadStoreSingleStructFixed, 17585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad = NEONLoadStoreSingleStructFixed | 17595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleL, 17605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad1 = NEONLoadStoreSingle1 | 17615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad, 17625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad2 = NEONLoadStoreSingle2 | 17635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad, 17645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad3 = NEONLoadStoreSingle3 | 17655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad, 17665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad4 = NEONLoadStoreSingle4 | 17675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructLoad, 17685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructStore1 = NEONLoadStoreSingle1 | 17695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFixed, 17705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructStore2 = NEONLoadStoreSingle2 | 17715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFixed, 17725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructStore3 = NEONLoadStoreSingle3 | 17735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFixed, 17745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructStore4 = NEONLoadStoreSingle4 | 17755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructFixed, 17765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_b = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_b, 17775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_h = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_h, 17785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_s = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_s, 17795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_d = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_d, 17805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1R = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingleAllLanes, 17815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_b = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_b, 17825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_h = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_h, 17835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_s = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_s, 17845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_d = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_d, 17855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 17865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_b = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_b, 17875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_h = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_h, 17885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_s = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_s, 17895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_d = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_d, 17905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2R = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingleAllLanes, 17915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_b = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_b, 17925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_h = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_h, 17935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_s = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_s, 17945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_d = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_d, 17955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 17965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_b = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_b, 17975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_h = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_h, 17985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_s = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_s, 17995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_d = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_d, 18005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3R = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingleAllLanes, 18015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_b = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_b, 18025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_h = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_h, 18035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_s = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_s, 18045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_d = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_d, 18055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_b = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_b, 18075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_h = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_h, 18085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_s = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_s, 18095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_d = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_d, 18105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4R = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingleAllLanes, 18115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_b = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_b, 18125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_h = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_h, 18135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_s = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_s, 18145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_d = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_d 18155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 18165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON load/store single structure with post-index addressing. 18185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONLoadStoreSingleStructPostIndexOp { 18195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructPostIndexFixed = 0x0D800000, 18205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructPostIndexFMask = 0xBF800000, 18215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONLoadStoreSingleStructPostIndexMask = 0xBFE0E000, 18220f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEONLoadStoreSingleStructPostIndex = 0x00800000, 18235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_b_post = NEON_LD1_b | NEONLoadStoreSingleStructPostIndex, 18245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_h_post = NEON_LD1_h | NEONLoadStoreSingleStructPostIndex, 18255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_s_post = NEON_LD1_s | NEONLoadStoreSingleStructPostIndex, 18265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1_d_post = NEON_LD1_d | NEONLoadStoreSingleStructPostIndex, 18275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD1R_post = NEON_LD1R | NEONLoadStoreSingleStructPostIndex, 18285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_b_post = NEON_ST1_b | NEONLoadStoreSingleStructPostIndex, 18295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_h_post = NEON_ST1_h | NEONLoadStoreSingleStructPostIndex, 18305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_s_post = NEON_ST1_s | NEONLoadStoreSingleStructPostIndex, 18315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST1_d_post = NEON_ST1_d | NEONLoadStoreSingleStructPostIndex, 18325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_b_post = NEON_LD2_b | NEONLoadStoreSingleStructPostIndex, 18345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_h_post = NEON_LD2_h | NEONLoadStoreSingleStructPostIndex, 18355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_s_post = NEON_LD2_s | NEONLoadStoreSingleStructPostIndex, 18365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2_d_post = NEON_LD2_d | NEONLoadStoreSingleStructPostIndex, 18375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD2R_post = NEON_LD2R | NEONLoadStoreSingleStructPostIndex, 18385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_b_post = NEON_ST2_b | NEONLoadStoreSingleStructPostIndex, 18395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_h_post = NEON_ST2_h | NEONLoadStoreSingleStructPostIndex, 18405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_s_post = NEON_ST2_s | NEONLoadStoreSingleStructPostIndex, 18415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST2_d_post = NEON_ST2_d | NEONLoadStoreSingleStructPostIndex, 18425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_b_post = NEON_LD3_b | NEONLoadStoreSingleStructPostIndex, 18445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_h_post = NEON_LD3_h | NEONLoadStoreSingleStructPostIndex, 18455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_s_post = NEON_LD3_s | NEONLoadStoreSingleStructPostIndex, 18465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3_d_post = NEON_LD3_d | NEONLoadStoreSingleStructPostIndex, 18475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD3R_post = NEON_LD3R | NEONLoadStoreSingleStructPostIndex, 18485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_b_post = NEON_ST3_b | NEONLoadStoreSingleStructPostIndex, 18495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_h_post = NEON_ST3_h | NEONLoadStoreSingleStructPostIndex, 18505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_s_post = NEON_ST3_s | NEONLoadStoreSingleStructPostIndex, 18515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST3_d_post = NEON_ST3_d | NEONLoadStoreSingleStructPostIndex, 18525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_b_post = NEON_LD4_b | NEONLoadStoreSingleStructPostIndex, 18545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_h_post = NEON_LD4_h | NEONLoadStoreSingleStructPostIndex, 18555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_s_post = NEON_LD4_s | NEONLoadStoreSingleStructPostIndex, 18565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4_d_post = NEON_LD4_d | NEONLoadStoreSingleStructPostIndex, 18575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_LD4R_post = NEON_LD4R | NEONLoadStoreSingleStructPostIndex, 18585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_b_post = NEON_ST4_b | NEONLoadStoreSingleStructPostIndex, 18595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_h_post = NEON_ST4_h | NEONLoadStoreSingleStructPostIndex, 18605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_s_post = NEON_ST4_s | NEONLoadStoreSingleStructPostIndex, 18615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ST4_d_post = NEON_ST4_d | NEONLoadStoreSingleStructPostIndex 18625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 18635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON modified immediate. 18655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONModifiedImmediateOp { 18665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediateFixed = 0x0F000400, 18675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediateFMask = 0x9FF80400, 18685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediateOpBit = 0x20000000, 18695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediate_MOVI = NEONModifiedImmediateFixed | 0x00000000, 18705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediate_MVNI = NEONModifiedImmediateFixed | 0x20000000, 18715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediate_ORR = NEONModifiedImmediateFixed | 0x00001000, 18725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONModifiedImmediate_BIC = NEONModifiedImmediateFixed | 0x20001000 18735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 18745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 18755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON shift immediate. 18765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONShiftImmediateOp { 18775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONShiftImmediateFixed = 0x0F000400, 18785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONShiftImmediateFMask = 0x9F800400, 18795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONShiftImmediateMask = 0xBF80FC00, 18805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONShiftImmediateUBit = 0x20000000, 18815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SHL = NEONShiftImmediateFixed | 0x00005000, 18825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSHLL = NEONShiftImmediateFixed | 0x0000A000, 18835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USHLL = NEONShiftImmediateFixed | 0x2000A000, 18845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SLI = NEONShiftImmediateFixed | 0x20005000, 18855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRI = NEONShiftImmediateFixed | 0x20004000, 18865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SHRN = NEONShiftImmediateFixed | 0x00008000, 18875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_RSHRN = NEONShiftImmediateFixed | 0x00008800, 18885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSHRN = NEONShiftImmediateFixed | 0x20009000, 18895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQRSHRN = NEONShiftImmediateFixed | 0x20009800, 18905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHRN = NEONShiftImmediateFixed | 0x00009000, 18915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRSHRN = NEONShiftImmediateFixed | 0x00009800, 18925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHRUN = NEONShiftImmediateFixed | 0x20008000, 18935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRSHRUN = NEONShiftImmediateFixed | 0x20008800, 18945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSHR = NEONShiftImmediateFixed | 0x00000000, 18955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRSHR = NEONShiftImmediateFixed | 0x00002000, 18965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USHR = NEONShiftImmediateFixed | 0x20000000, 18975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URSHR = NEONShiftImmediateFixed | 0x20002000, 18985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSRA = NEONShiftImmediateFixed | 0x00001000, 18995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRSRA = NEONShiftImmediateFixed | 0x00003000, 19005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USRA = NEONShiftImmediateFixed | 0x20001000, 19015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URSRA = NEONShiftImmediateFixed | 0x20003000, 19025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHLU = NEONShiftImmediateFixed | 0x20006000, 19035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SCVTF_imm = NEONShiftImmediateFixed | 0x0000E000, 19045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UCVTF_imm = NEONShiftImmediateFixed | 0x2000E000, 19055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZS_imm = NEONShiftImmediateFixed | 0x0000F800, 19065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZU_imm = NEONShiftImmediateFixed | 0x2000F800, 19075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHL_imm = NEONShiftImmediateFixed | 0x00007000, 19085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSHL_imm = NEONShiftImmediateFixed | 0x20007000 19095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 19105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON table. 19125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONTableOp { 19135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONTableFixed = 0x0E000000, 19145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONTableFMask = 0xBF208C00, 19155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONTableExt = 0x00001000, 19165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONTableMask = 0xBF20FC00, 19175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBL_1v = NEONTableFixed | 0x00000000, 19185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBL_2v = NEONTableFixed | 0x00002000, 19195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBL_3v = NEONTableFixed | 0x00004000, 19205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBL_4v = NEONTableFixed | 0x00006000, 19215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBX_1v = NEON_TBL_1v | NEONTableExt, 19225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBX_2v = NEON_TBL_2v | NEONTableExt, 19235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBX_3v = NEON_TBL_3v | NEONTableExt, 19245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TBX_4v = NEON_TBL_4v | NEONTableExt 19255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 19265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON perm. 19285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONPermOp { 19295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONPermFixed = 0x0E000800, 19305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONPermFMask = 0xBF208C00, 19315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONPermMask = 0x3F20FC00, 19325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UZP1 = NEONPermFixed | 0x00001000, 19335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TRN1 = NEONPermFixed | 0x00002000, 19345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ZIP1 = NEONPermFixed | 0x00003000, 19355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UZP2 = NEONPermFixed | 0x00005000, 19365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_TRN2 = NEONPermFixed | 0x00006000, 19375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ZIP2 = NEONPermFixed | 0x00007000 19385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 19395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar instructions with two register operands. 19415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalar2RegMiscOp { 19425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar2RegMiscFixed = 0x5E200800, 19435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar2RegMiscFMask = 0xDF3E0C00, 19445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar2RegMiscMask = NEON_Q | NEONScalar | NEON2RegMiscMask, 19455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGT_zero_scalar = NEON_Q | NEONScalar | NEON_CMGT_zero, 19465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_CMEQ_zero, 19475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMLT_zero_scalar = NEON_Q | NEONScalar | NEON_CMLT_zero, 19485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGE_zero_scalar = NEON_Q | NEONScalar | NEON_CMGE_zero, 19495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMLE_zero_scalar = NEON_Q | NEONScalar | NEON_CMLE_zero, 19505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ABS_scalar = NEON_Q | NEONScalar | NEON_ABS, 19515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQABS_scalar = NEON_Q | NEONScalar | NEON_SQABS, 19525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_NEG_scalar = NEON_Q | NEONScalar | NEON_NEG, 19535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQNEG_scalar = NEON_Q | NEONScalar | NEON_SQNEG, 19545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQXTN_scalar = NEON_Q | NEONScalar | NEON_SQXTN, 19555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQXTN_scalar = NEON_Q | NEONScalar | NEON_UQXTN, 19565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQXTUN_scalar = NEON_Q | NEONScalar | NEON_SQXTUN, 19575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUQADD_scalar = NEON_Q | NEONScalar | NEON_SUQADD, 19585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USQADD_scalar = NEON_Q | NEONScalar | NEON_USQADD, 19595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar2RegMiscOpcode = NEON2RegMiscOpcode, 19615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_NEG_scalar_opcode = NEON_NEG_scalar & NEONScalar2RegMiscOpcode, 19625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar2RegMiscFPMask = NEONScalar2RegMiscMask | 0x00800000, 19645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRSQRTE_scalar = NEON_Q | NEONScalar | NEON_FRSQRTE, 19655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRECPE_scalar = NEON_Q | NEONScalar | NEON_FRECPE, 19665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SCVTF_scalar = NEON_Q | NEONScalar | NEON_SCVTF, 19675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UCVTF_scalar = NEON_Q | NEONScalar | NEON_UCVTF, 19685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGT_zero, 19695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_FCMEQ_zero, 19705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMLT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLT_zero, 19715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGE_zero, 19725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMLE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLE_zero, 19735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRECPX_scalar = NEONScalar2RegMiscFixed | 0x0081F000, 19745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTNS_scalar = NEON_Q | NEONScalar | NEON_FCVTNS, 19755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTNU_scalar = NEON_Q | NEONScalar | NEON_FCVTNU, 19765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTPS_scalar = NEON_Q | NEONScalar | NEON_FCVTPS, 19775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTPU_scalar = NEON_Q | NEONScalar | NEON_FCVTPU, 19785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTMS_scalar = NEON_Q | NEONScalar | NEON_FCVTMS, 19795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTMU_scalar = NEON_Q | NEONScalar | NEON_FCVTMU, 19805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZS_scalar = NEON_Q | NEONScalar | NEON_FCVTZS, 19815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZU_scalar = NEON_Q | NEONScalar | NEON_FCVTZU, 19825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTAS_scalar = NEON_Q | NEONScalar | NEON_FCVTAS, 19835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTAU_scalar = NEON_Q | NEONScalar | NEON_FCVTAU, 19845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTXN_scalar = NEON_Q | NEONScalar | NEON_FCVTXN 19855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 19865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 19875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar instructions with three same-type operands. 19885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalar3SameOp { 19895289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameFixed = 0x5E200400, 19905289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameFMask = 0xDF200400, 19915289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameMask = 0xFF20FC00, 19925289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADD_scalar = NEON_Q | NEONScalar | NEON_ADD, 19935289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMEQ_scalar = NEON_Q | NEONScalar | NEON_CMEQ, 19945289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGE_scalar = NEON_Q | NEONScalar | NEON_CMGE, 19955289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMGT_scalar = NEON_Q | NEONScalar | NEON_CMGT, 19965289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMHI_scalar = NEON_Q | NEONScalar | NEON_CMHI, 19975289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMHS_scalar = NEON_Q | NEONScalar | NEON_CMHS, 19985289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_CMTST_scalar = NEON_Q | NEONScalar | NEON_CMTST, 19995289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SUB_scalar = NEON_Q | NEONScalar | NEON_SUB, 20005289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQADD_scalar = NEON_Q | NEONScalar | NEON_UQADD, 20015289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQADD_scalar = NEON_Q | NEONScalar | NEON_SQADD, 20025289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSUB_scalar = NEON_Q | NEONScalar | NEON_UQSUB, 20035289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSUB_scalar = NEON_Q | NEONScalar | NEON_SQSUB, 20045289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_USHL_scalar = NEON_Q | NEONScalar | NEON_USHL, 20055289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SSHL_scalar = NEON_Q | NEONScalar | NEON_SSHL, 20065289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSHL_scalar = NEON_Q | NEONScalar | NEON_UQSHL, 20075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHL_scalar = NEON_Q | NEONScalar | NEON_SQSHL, 20085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_URSHL_scalar = NEON_Q | NEONScalar | NEON_URSHL, 20095289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SRSHL_scalar = NEON_Q | NEONScalar | NEON_SRSHL, 20105289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQRSHL_scalar = NEON_Q | NEONScalar | NEON_UQRSHL, 20115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRSHL_scalar = NEON_Q | NEONScalar | NEON_SQRSHL, 20125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULH_scalar = NEON_Q | NEONScalar | NEON_SQDMULH, 20135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRDMULH_scalar = NEON_Q | NEONScalar | NEON_SQRDMULH, 20145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20155289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // NEON floating point scalar instructions with three same-type operands. 20165289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameFPFixed = NEONScalar3SameFixed | 0x0000C000, 20175289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameFPFMask = NEONScalar3SameFMask | 0x0000C000, 20185289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3SameFPMask = NEONScalar3SameMask | 0x00800000, 20195289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FACGE_scalar = NEON_Q | NEONScalar | NEON_FACGE, 20205289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FACGT_scalar = NEON_Q | NEONScalar | NEON_FACGT, 20215289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMEQ_scalar = NEON_Q | NEONScalar | NEON_FCMEQ, 20225289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGE_scalar = NEON_Q | NEONScalar | NEON_FCMGE, 20235289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCMGT_scalar = NEON_Q | NEONScalar | NEON_FCMGT, 20245289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMULX_scalar = NEON_Q | NEONScalar | NEON_FMULX, 20255289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRECPS_scalar = NEON_Q | NEONScalar | NEON_FRECPS, 20265289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FRSQRTS_scalar = NEON_Q | NEONScalar | NEON_FRSQRTS, 20275289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FABD_scalar = NEON_Q | NEONScalar | NEON_FABD 20285289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 20295289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20305289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar instructions with three different-type operands. 20315289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalar3DiffOp { 20325289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3DiffFixed = 0x5E200000, 20335289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3DiffFMask = 0xDF200C00, 20345289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalar3DiffMask = NEON_Q | NEONScalar | NEON3DifferentMask, 20355289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLAL_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL, 20365289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLSL_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL, 20375289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULL_scalar = NEON_Q | NEONScalar | NEON_SQDMULL 20385289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 20395289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20405289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar instructions with indexed element operand. 20415289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalarByIndexedElementOp { 20425289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarByIndexedElementFixed = 0x5F000000, 20435289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarByIndexedElementFMask = 0xDF000400, 20445289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarByIndexedElementMask = 0xFF00F400, 20455289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLAL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL_byelement, 20465289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMLSL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL_byelement, 20475289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULL_byelement, 20485289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQDMULH_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULH_byelement, 20495289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQRDMULH_byelement_scalar 20505289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl = NEON_Q | NEONScalar | NEON_SQRDMULH_byelement, 20515289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20525289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl // Floating point instructions. 20535289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarByIndexedElementFPFixed 20545289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl = NEONScalarByIndexedElementFixed | 0x00800000, 20555289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarByIndexedElementFPMask 20565289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl = NEONScalarByIndexedElementMask | 0x00800000, 20575289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLA_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLA_byelement, 20585289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMLS_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLS_byelement, 20595289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMUL_byelement_scalar = NEON_Q | NEONScalar | NEON_FMUL_byelement, 20605289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMULX_byelement_scalar = NEON_Q | NEONScalar | NEON_FMULX_byelement 20615289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 20625289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20635289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar register copy. 20645289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalarCopyOp { 20655289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarCopyFixed = 0x5E000400, 20665289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarCopyFMask = 0xDFE08400, 20675289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarCopyMask = 0xFFE0FC00, 20685289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_DUP_ELEMENT_scalar = NEON_Q | NEONScalar | NEON_DUP_ELEMENT 20695289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 20705289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20715289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar pairwise instructions. 20725289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalarPairwiseOp { 20735289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarPairwiseFixed = 0x5E300800, 20745289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarPairwiseFMask = 0xDF3E0C00, 20755289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarPairwiseMask = 0xFFB1F800, 20765289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_ADDP_scalar = NEONScalarPairwiseFixed | 0x0081B000, 20775289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXNMP_scalar = NEONScalarPairwiseFixed | 0x2000C000, 20785289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINNMP_scalar = NEONScalarPairwiseFixed | 0x2080C000, 20795289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FADDP_scalar = NEONScalarPairwiseFixed | 0x2000D000, 20805289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMAXP_scalar = NEONScalarPairwiseFixed | 0x2000F000, 20815289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FMINP_scalar = NEONScalarPairwiseFixed | 0x2080F000 20825289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 20835289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 20845289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl// NEON scalar shift immediate. 20855289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixlenum NEONScalarShiftImmediateOp { 20865289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarShiftImmediateFixed = 0x5F000400, 20875289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarShiftImmediateFMask = 0xDF800400, 20885289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEONScalarShiftImmediateMask = 0xFF80FC00, 20890f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SHL_scalar = NEON_Q | NEONScalar | NEON_SHL, 20900f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SLI_scalar = NEON_Q | NEONScalar | NEON_SLI, 20910f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SRI_scalar = NEON_Q | NEONScalar | NEON_SRI, 20920f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SSHR_scalar = NEON_Q | NEONScalar | NEON_SSHR, 20930f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_USHR_scalar = NEON_Q | NEONScalar | NEON_USHR, 20940f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SRSHR_scalar = NEON_Q | NEONScalar | NEON_SRSHR, 20950f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_URSHR_scalar = NEON_Q | NEONScalar | NEON_URSHR, 20960f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SSRA_scalar = NEON_Q | NEONScalar | NEON_SSRA, 20970f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_USRA_scalar = NEON_Q | NEONScalar | NEON_USRA, 20980f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SRSRA_scalar = NEON_Q | NEONScalar | NEON_SRSRA, 20990f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_URSRA_scalar = NEON_Q | NEONScalar | NEON_URSRA, 21000f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_UQSHRN_scalar = NEON_Q | NEONScalar | NEON_UQSHRN, 21010f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_UQRSHRN_scalar = NEON_Q | NEONScalar | NEON_UQRSHRN, 21020f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SQSHRN_scalar = NEON_Q | NEONScalar | NEON_SQSHRN, 21030f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SQRSHRN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRN, 21040f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SQSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQSHRUN, 21050f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SQRSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRUN, 21060f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SQSHLU_scalar = NEON_Q | NEONScalar | NEON_SQSHLU, 21075289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_SQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_SQSHL_imm, 21085289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_UQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_UQSHL_imm, 21090f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_SCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_SCVTF_imm, 21100f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl NEON_UCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_UCVTF_imm, 21115289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZS_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZS_imm, 21125289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl NEON_FCVTZU_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZU_imm 21135289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl}; 21145289c5900fb214f2f6aa61e2a9263730dcf4cc17armvixl 2115578645f14e122d2b87d907e298cda7e7d0babf1farmvixl// Unimplemented and unallocated instructions. These are defined to make fixed 2116578645f14e122d2b87d907e298cda7e7d0babf1farmvixl// bit assertion easier. 2117578645f14e122d2b87d907e298cda7e7d0babf1farmvixlenum UnimplementedOp { 2118578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UnimplementedFixed = 0x00000000, 2119578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UnimplementedFMask = 0x00000000 2120ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl}; 2121578645f14e122d2b87d907e298cda7e7d0babf1farmvixl 2122578645f14e122d2b87d907e298cda7e7d0babf1farmvixlenum UnallocatedOp { 2123578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UnallocatedFixed = 0x00000000, 2124578645f14e122d2b87d907e298cda7e7d0babf1farmvixl UnallocatedFMask = 0x00000000 2125578645f14e122d2b87d907e298cda7e7d0babf1farmvixl}; 2126578645f14e122d2b87d907e298cda7e7d0babf1farmvixl 21270f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// Re-enable `clang-format` after the `enum`s. 21280f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl// clang-format on 21290f35e36b7f5d1d2f4d95989b418447e1a4bcc8cdarmvixl 213088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois} // namespace aarch64 2131ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl} // namespace vixl 2132ad96eda8944ab1c1ba55715c50d9d6f0a3ed1dcarmvixl 2133d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#endif // VIXL_AARCH64_CONSTANTS_AARCH64_H_ 2134