10cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Copyright 2015, ARM Limited 20cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// All rights reserved. 30cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 40cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Redistribution and use in source and binary forms, with or without 50cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// modification, are permitted provided that the following conditions are met: 60cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 70cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// * Redistributions of source code must retain the above copyright notice, 80cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// this list of conditions and the following disclaimer. 90cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// * Redistributions in binary form must reproduce the above copyright notice, 100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// this list of conditions and the following disclaimer in the documentation 110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// and/or other materials provided with the distribution. 120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// * Neither the name of ARM Limited nor the names of its contributors may be 130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// used to endorse or promote products derived from this software without 140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// specific prior written permission. 150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND 170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#ifndef VIXL_A64_CONSTANTS_A64_H_ 280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define VIXL_A64_CONSTANTS_A64_H_ 290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 300cc8b6ece4b3e757e11a906a81ece292437713abarmvixlnamespace vixl { 310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 320cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst unsigned kNumberOfRegisters = 32; 330cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst unsigned kNumberOfVRegisters = 32; 340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst unsigned kNumberOfFPRegisters = kNumberOfVRegisters; 350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Callee saved registers are x21-x30(lr). 360cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kNumberOfCalleeSavedRegisters = 10; 370cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kFirstCalleeSavedRegisterIndex = 21; 380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Callee saved FP registers are d8-d15. 390cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kNumberOfCalleeSavedFPRegisters = 8; 400cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kFirstCalleeSavedFPRegisterIndex = 8; 410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define REGISTER_CODE_LIST(R) \ 430cc8b6ece4b3e757e11a906a81ece292437713abarmvixlR(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) \ 440cc8b6ece4b3e757e11a906a81ece292437713abarmvixlR(8) R(9) R(10) R(11) R(12) R(13) R(14) R(15) \ 450cc8b6ece4b3e757e11a906a81ece292437713abarmvixlR(16) R(17) R(18) R(19) R(20) R(21) R(22) R(23) \ 460cc8b6ece4b3e757e11a906a81ece292437713abarmvixlR(24) R(25) R(26) R(27) R(28) R(29) R(30) R(31) 470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define INSTRUCTION_FIELDS_LIST(V_) \ 490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Register fields */ \ 500cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rd, 4, 0, Bits) /* Destination register. */ \ 510cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rn, 9, 5, Bits) /* First source register. */ \ 520cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rm, 20, 16, Bits) /* Second source register. */ \ 530cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Ra, 14, 10, Bits) /* Third source register. */ \ 540cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rt, 4, 0, Bits) /* Load/store register. */ \ 550cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rt2, 14, 10, Bits) /* Load/store second register. */ \ 560cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Rs, 20, 16, Bits) /* Exclusive access status. */ \ 570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Common bits */ \ 590cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(SixtyFourBits, 31, 31, Bits) \ 600cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(FlagsUpdate, 29, 29, Bits) \ 610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* PC relative addressing */ \ 630cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmPCRelHi, 23, 5, SignedBits) \ 640cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmPCRelLo, 30, 29, Bits) \ 650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Add/subtract/logical shift register */ \ 670cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ShiftDP, 23, 22, Bits) \ 680cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmDPShift, 15, 10, Bits) \ 690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Add/subtract immediate */ \ 710cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmAddSub, 21, 10, Bits) \ 720cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ShiftAddSub, 23, 22, Bits) \ 730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Add/substract extend */ \ 750cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmExtendShift, 12, 10, Bits) \ 760cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ExtendMode, 15, 13, Bits) \ 770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Move wide */ \ 790cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmMoveWide, 20, 5, Bits) \ 800cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ShiftMoveWide, 22, 21, Bits) \ 810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Logical immediate, bitfield and extract */ \ 830cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(BitN, 22, 22, Bits) \ 840cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmRotate, 21, 16, Bits) \ 850cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmSetBits, 15, 10, Bits) \ 860cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmR, 21, 16, Bits) \ 870cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmS, 15, 10, Bits) \ 880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Test and branch immediate */ \ 900cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmTestBranch, 18, 5, SignedBits) \ 910cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmTestBranchBit40, 23, 19, Bits) \ 920cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmTestBranchBit5, 31, 31, Bits) \ 930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Conditionals */ \ 950cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Condition, 15, 12, Bits) \ 960cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ConditionBranch, 3, 0, Bits) \ 970cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Nzcv, 3, 0, Bits) \ 980cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmCondCmp, 20, 16, Bits) \ 990cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmCondBranch, 23, 5, SignedBits) \ 1000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Floating point */ \ 1020cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(FPType, 23, 22, Bits) \ 1030cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmFP, 20, 13, Bits) \ 1040cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(FPScale, 15, 10, Bits) \ 1050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Load Store */ \ 1070cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmLS, 20, 12, SignedBits) \ 1080cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmLSUnsigned, 21, 10, Bits) \ 1090cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmLSPair, 21, 15, SignedBits) \ 1100cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmShiftLS, 12, 12, Bits) \ 1110cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LSOpc, 23, 22, Bits) \ 1120cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LSVector, 26, 26, Bits) \ 1130cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LSSize, 31, 30, Bits) \ 1140cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmPrefetchOperation, 4, 0, Bits) \ 1150cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(PrefetchHint, 4, 3, Bits) \ 1160cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(PrefetchTarget, 2, 1, Bits) \ 1170cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(PrefetchStream, 0, 0, Bits) \ 1180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Other immediates */ \ 1200cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmUncondBranch, 25, 0, SignedBits) \ 1210cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmCmpBranch, 23, 5, SignedBits) \ 1220cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmLLiteral, 23, 5, SignedBits) \ 1230cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmException, 20, 5, Bits) \ 1240cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmHint, 11, 5, Bits) \ 1250cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmBarrierDomain, 11, 10, Bits) \ 1260cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmBarrierType, 9, 8, Bits) \ 1270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* System (MRS, MSR, SYS) */ \ 1290cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmSystemRegister, 19, 5, Bits) \ 1300cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(SysO0, 19, 19, Bits) \ 1310cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(SysOp, 18, 5, Bits) \ 1320cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(SysOp1, 18, 16, Bits) \ 1330cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(SysOp2, 7, 5, Bits) \ 1340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(CRn, 15, 12, Bits) \ 1350cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(CRm, 11, 8, Bits) \ 1360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* Load-/store-exclusive */ \ 1380cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LdStXLoad, 22, 22, Bits) \ 1390cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LdStXNotExclusive, 23, 23, Bits) \ 1400cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LdStXAcquireRelease, 15, 15, Bits) \ 1410cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LdStXSizeLog2, 31, 30, Bits) \ 1420cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(LdStXPair, 21, 21, Bits) \ 1430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* NEON generic fields */ \ 1450cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONQ, 30, 30, Bits) \ 1460cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONSize, 23, 22, Bits) \ 1470cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONLSSize, 11, 10, Bits) \ 1480cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONS, 12, 12, Bits) \ 1490cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONL, 21, 21, Bits) \ 1500cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONM, 20, 20, Bits) \ 1510cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONH, 11, 11, Bits) \ 1520cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONExt, 14, 11, Bits) \ 1530cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEON5, 20, 16, Bits) \ 1540cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEON4, 14, 11, Bits) \ 1550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* NEON Modified Immediate fields */ \ 1570cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONabc, 18, 16, Bits) \ 1580cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONdefgh, 9, 5, Bits) \ 1590cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONModImmOp, 29, 29, Bits) \ 1600cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(NEONCmode, 15, 12, Bits) \ 1610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl \ 1620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* NEON Shift Immediate fields */ \ 1630cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONImmhImmb, 22, 16, Bits) \ 1640cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONImmh, 22, 19, Bits) \ 1650cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(ImmNEONImmb, 18, 16, Bits) 1660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 1670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define SYSTEM_REGISTER_FIELDS_LIST(V_, M_) \ 1680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* NZCV */ \ 1690cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Flags, 31, 28, Bits) \ 1700cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(N, 31, 31, Bits) \ 1710cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(Z, 30, 30, Bits) \ 1720cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(C, 29, 29, Bits) \ 1730cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(V, 28, 28, Bits) \ 1740cc8b6ece4b3e757e11a906a81ece292437713abarmvixlM_(NZCV, Flags_mask) \ 1750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl/* FPCR */ \ 1760cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(AHP, 26, 26, Bits) \ 1770cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(DN, 25, 25, Bits) \ 1780cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(FZ, 24, 24, Bits) \ 1790cc8b6ece4b3e757e11a906a81ece292437713abarmvixlV_(RMode, 23, 22, Bits) \ 1800cc8b6ece4b3e757e11a906a81ece292437713abarmvixlM_(FPCR, AHP_mask | DN_mask | FZ_mask | RMode_mask) 1810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 1820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Fields offsets. 1830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define DECLARE_FIELDS_OFFSETS(Name, HighBit, LowBit, X) \ 1840cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int Name##_offset = LowBit; \ 1850cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int Name##_width = HighBit - LowBit + 1; \ 1860cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst uint32_t Name##_mask = ((1 << Name##_width) - 1) << LowBit; 1870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define NOTHING(A, B) 1880cc8b6ece4b3e757e11a906a81ece292437713abarmvixlINSTRUCTION_FIELDS_LIST(DECLARE_FIELDS_OFFSETS) 1890cc8b6ece4b3e757e11a906a81ece292437713abarmvixlSYSTEM_REGISTER_FIELDS_LIST(DECLARE_FIELDS_OFFSETS, NOTHING) 1900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#undef NOTHING 1910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#undef DECLARE_FIELDS_BITS 1920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 1930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// ImmPCRel is a compound field (not present in INSTRUCTION_FIELDS_LIST), formed 1940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// from ImmPCRelLo and ImmPCRelHi. 1950cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int ImmPCRel_mask = ImmPCRelLo_mask | ImmPCRelHi_mask; 1960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 1970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Condition codes. 1980cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum Condition { 1990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl eq = 0, // Z set Equal. 2000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ne = 1, // Z clear Not equal. 2010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl cs = 2, // C set Carry set. 2020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl cc = 3, // C clear Carry clear. 2030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl mi = 4, // N set Negative. 2040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl pl = 5, // N clear Positive or zero. 2050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl vs = 6, // V set Overflow. 2060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl vc = 7, // V clear No overflow. 2070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl hi = 8, // C set, Z clear Unsigned higher. 2080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ls = 9, // C clear or Z set Unsigned lower or same. 2090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ge = 10, // N == V Greater or equal. 2100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl lt = 11, // N != V Less than. 2110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl gt = 12, // Z clear, N == V Greater than. 2120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl le = 13, // Z set or N != V Less then or equal 2130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl al = 14, // Always. 2140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl nv = 15, // Behaves as always/al. 2150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Aliases. 2170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl hs = cs, // C set Unsigned higher or same. 2180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl lo = cc // C clear Unsigned lower. 2190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2210cc8b6ece4b3e757e11a906a81ece292437713abarmvixlinline Condition InvertCondition(Condition cond) { 2220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Conditions al and nv behave identically, as "always true". They can't be 2230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // inverted, because there is no "always false" condition. 2240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl VIXL_ASSERT((cond != al) && (cond != nv)); 2250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl return static_cast<Condition>(cond ^ 1); 2260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl} 2270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2280cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPTrapFlags { 2290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EnableTrap = 1, 2300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DisableTrap = 0 2310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2330cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FlagsUpdate { 2340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SetFlags = 1, 2350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LeaveFlags = 0 2360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2380cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum StatusFlags { 2390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NoFlag = 0, 2400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Derive the flag combinations from the system register bit descriptions. 2420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NFlag = N_mask, 2430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ZFlag = Z_mask, 2440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CFlag = C_mask, 2450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl VFlag = V_mask, 2460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NZFlag = NFlag | ZFlag, 2470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NCFlag = NFlag | CFlag, 2480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NVFlag = NFlag | VFlag, 2490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ZCFlag = ZFlag | CFlag, 2500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ZVFlag = ZFlag | VFlag, 2510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CVFlag = CFlag | VFlag, 2520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NZCFlag = NFlag | ZFlag | CFlag, 2530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NZVFlag = NFlag | ZFlag | VFlag, 2540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NCVFlag = NFlag | CFlag | VFlag, 2550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ZCVFlag = ZFlag | CFlag | VFlag, 2560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NZCVFlag = NFlag | ZFlag | CFlag | VFlag, 2570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Floating-point comparison results. 2590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPEqualFlag = ZCFlag, 2600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPLessThanFlag = NFlag, 2610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPGreaterThanFlag = CFlag, 2620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPUnorderedFlag = CVFlag 2630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2650cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum Shift { 2660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NO_SHIFT = -1, 2670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSL = 0x0, 2680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSR = 0x1, 2690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ASR = 0x2, 2700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ROR = 0x3, 2710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MSL = 0x4 2720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2740cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum Extend { 2750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NO_EXTEND = -1, 2760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UXTB = 0, 2770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UXTH = 1, 2780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UXTW = 2, 2790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UXTX = 3, 2800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SXTB = 4, 2810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SXTH = 5, 2820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SXTW = 6, 2830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SXTX = 7 2840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2860cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemHint { 2870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NOP = 0, 2880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl YIELD = 1, 2890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl WFE = 2, 2900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl WFI = 3, 2910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SEV = 4, 2920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SEVL = 5 2930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 2940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 2950cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum BarrierDomain { 2960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl OuterShareable = 0, 2970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NonShareable = 1, 2980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl InnerShareable = 2, 2990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FullSystem = 3 3000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3020cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum BarrierType { 3030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BarrierOther = 0, 3040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BarrierReads = 1, 3050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BarrierWrites = 2, 3060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BarrierAll = 3 3070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3090cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum PrefetchOperation { 3100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL1KEEP = 0x00, 3110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL1STRM = 0x01, 3120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL2KEEP = 0x02, 3130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL2STRM = 0x03, 3140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL3KEEP = 0x04, 3150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLDL3STRM = 0x05, 3160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL1KEEP = 0x08, 3180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL1STRM = 0x09, 3190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL2KEEP = 0x0a, 3200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL2STRM = 0x0b, 3210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL3KEEP = 0x0c, 3220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PLIL3STRM = 0x0d, 3230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL1KEEP = 0x10, 3250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL1STRM = 0x11, 3260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL2KEEP = 0x12, 3270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL2STRM = 0x13, 3280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL3KEEP = 0x14, 3290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PSTL3STRM = 0x15 3300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// System/special register names. 3330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// This information is not encoded as one field but as the concatenation of 3340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// multiple fields (Op0<0>, Op1, Crn, Crm, Op2). 3350cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemRegister { 3360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NZCV = ((0x1 << SysO0_offset) | 3370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x3 << SysOp1_offset) | 3380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x4 << CRn_offset) | 3390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x2 << CRm_offset) | 3400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x0 << SysOp2_offset)) >> ImmSystemRegister_offset, 3410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPCR = ((0x1 << SysO0_offset) | 3420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x3 << SysOp1_offset) | 3430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x4 << CRn_offset) | 3440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x4 << CRm_offset) | 3450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x0 << SysOp2_offset)) >> ImmSystemRegister_offset 3460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3480cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum InstructionCacheOp { 3490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl IVAU = ((0x3 << SysOp1_offset) | 3500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x7 << CRn_offset) | 3510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x5 << CRm_offset) | 3520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x1 << SysOp2_offset)) >> SysOp_offset 3530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3550cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum DataCacheOp { 3560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CVAC = ((0x3 << SysOp1_offset) | 3570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x7 << CRn_offset) | 3580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0xa << CRm_offset) | 3590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CVAU = ((0x3 << SysOp1_offset) | 3610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x7 << CRn_offset) | 3620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0xb << CRm_offset) | 3630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CIVAC = ((0x3 << SysOp1_offset) | 3650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x7 << CRn_offset) | 3660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0xe << CRm_offset) | 3670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x1 << SysOp2_offset)) >> SysOp_offset, 3680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ZVA = ((0x3 << SysOp1_offset) | 3690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x7 << CRn_offset) | 3700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x4 << CRm_offset) | 3710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl (0x1 << SysOp2_offset)) >> SysOp_offset 3720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 3730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Instruction enumerations. 3750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 3760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// These are the masks that define a class of instructions, and the list of 3770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// instructions within each class. Each enumeration has a Fixed, FMask and 3780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Mask value. 3790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 3800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Fixed: The fixed bits in this instruction class. 3810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// FMask: The mask used to extract the fixed bits in the class. 3820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Mask: The mask used to identify the instructions within a class. 3830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 3840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// The enumerations can be used like this: 3850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// 3860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// VIXL_ASSERT(instr->Mask(PCRelAddressingFMask) == PCRelAddressingFixed); 3870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// switch(instr->Mask(PCRelAddressingMask)) { 3880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// case ADR: Format("adr 'Xd, 'AddrPCRelByte"); break; 3890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// case ADRP: Format("adrp 'Xd, 'AddrPCRelPage"); break; 3900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// default: printf("Unknown instruction\n"); 3910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// } 3920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 3940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Generic fields. 3950cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum GenericInstrField { 3960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SixtyFourBits = 0x80000000, 3970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ThirtyTwoBits = 0x00000000, 3980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FP32 = 0x00000000, 3990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FP64 = 0x00400000 4000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4020cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONFormatField { 4030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONFormatFieldMask = 0x40C00000, 4040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_Q = 0x40000000, 4050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_8B = 0x00000000, 4060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_16B = NEON_8B | NEON_Q, 4070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_4H = 0x00400000, 4080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_8H = NEON_4H | NEON_Q, 4090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_2S = 0x00800000, 4100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_4S = NEON_2S | NEON_Q, 4110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_1D = 0x00C00000, 4120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_2D = 0x00C00000 | NEON_Q 4130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4150cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONFPFormatField { 4160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONFPFormatFieldMask = 0x40400000, 4170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FP_2S = FP32, 4180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FP_4S = FP32 | NEON_Q, 4190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FP_2D = FP64 | NEON_Q 4200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4220cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLSFormatField { 4230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLSFormatFieldMask = 0x40000C00, 4240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_8B = 0x00000000, 4250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_16B = LS_NEON_8B | NEON_Q, 4260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_4H = 0x00000400, 4270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_8H = LS_NEON_4H | NEON_Q, 4280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_2S = 0x00000800, 4290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_4S = LS_NEON_2S | NEON_Q, 4300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_1D = 0x00000C00, 4310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LS_NEON_2D = LS_NEON_1D | NEON_Q 4320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalarFormatField { 4350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarFormatFieldMask = 0x00C00000, 4360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar = 0x10000000, 4370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_B = 0x00000000, 4380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_H = 0x00400000, 4390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_S = 0x00800000, 4400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_D = 0x00C00000 4410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// PC relative addressing. 4440cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum PCRelAddressingOp { 4450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PCRelAddressingFixed = 0x10000000, 4460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PCRelAddressingFMask = 0x1F000000, 4470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PCRelAddressingMask = 0x9F000000, 4480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADR = PCRelAddressingFixed | 0x00000000, 4490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADRP = PCRelAddressingFixed | 0x80000000 4500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Add/sub (immediate, shifted and extended.) 4530cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kSFOffset = 31; 4540cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum AddSubOp { 4550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubOpMask = 0x60000000, 4560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubSetFlagsBit = 0x20000000, 4570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADD = 0x00000000, 4580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADDS = ADD | AddSubSetFlagsBit, 4590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SUB = 0x40000000, 4600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SUBS = SUB | AddSubSetFlagsBit 4610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define ADD_SUB_OP_LIST(V) \ 4640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ADD), \ 4650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ADDS), \ 4660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(SUB), \ 4670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(SUBS) 4680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4690cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum AddSubImmediateOp { 4700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubImmediateFixed = 0x11000000, 4710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubImmediateFMask = 0x1F000000, 4720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubImmediateMask = 0xFF000000, 4730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define ADD_SUB_IMMEDIATE(A) \ 4740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_w_imm = AddSubImmediateFixed | A, \ 4750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_x_imm = AddSubImmediateFixed | A | SixtyFourBits 4760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADD_SUB_OP_LIST(ADD_SUB_IMMEDIATE) 4770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef ADD_SUB_IMMEDIATE 4780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4800cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum AddSubShiftedOp { 4810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubShiftedFixed = 0x0B000000, 4820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubShiftedFMask = 0x1F200000, 4830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubShiftedMask = 0xFF200000, 4840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define ADD_SUB_SHIFTED(A) \ 4850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_w_shift = AddSubShiftedFixed | A, \ 4860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_x_shift = AddSubShiftedFixed | A | SixtyFourBits 4870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADD_SUB_OP_LIST(ADD_SUB_SHIFTED) 4880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef ADD_SUB_SHIFTED 4890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 4900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 4910cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum AddSubExtendedOp { 4920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubExtendedFixed = 0x0B200000, 4930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubExtendedFMask = 0x1F200000, 4940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubExtendedMask = 0xFFE00000, 4950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define ADD_SUB_EXTENDED(A) \ 4960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_w_ext = AddSubExtendedFixed | A, \ 4970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_x_ext = AddSubExtendedFixed | A | SixtyFourBits 4980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADD_SUB_OP_LIST(ADD_SUB_EXTENDED) 4990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef ADD_SUB_EXTENDED 5000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Add/sub with carry. 5030cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum AddSubWithCarryOp { 5040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubWithCarryFixed = 0x1A000000, 5050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubWithCarryFMask = 0x1FE00000, 5060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AddSubWithCarryMask = 0xFFE0FC00, 5070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADC_w = AddSubWithCarryFixed | ADD, 5080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADC_x = AddSubWithCarryFixed | ADD | SixtyFourBits, 5090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADC = ADC_w, 5100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADCS_w = AddSubWithCarryFixed | ADDS, 5110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ADCS_x = AddSubWithCarryFixed | ADDS | SixtyFourBits, 5120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBC_w = AddSubWithCarryFixed | SUB, 5130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBC_x = AddSubWithCarryFixed | SUB | SixtyFourBits, 5140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBC = SBC_w, 5150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBCS_w = AddSubWithCarryFixed | SUBS, 5160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBCS_x = AddSubWithCarryFixed | SUBS | SixtyFourBits 5170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Logical (immediate and shifted register). 5210cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LogicalOp { 5220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalOpMask = 0x60200000, 5230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NOT = 0x00200000, 5240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND = 0x00000000, 5250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BIC = AND | NOT, 5260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR = 0x20000000, 5270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORN = ORR | NOT, 5280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR = 0x40000000, 5290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EON = EOR | NOT, 5300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS = 0x60000000, 5310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BICS = ANDS | NOT 5320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Logical immediate. 5350cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LogicalImmediateOp { 5360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalImmediateFixed = 0x12000000, 5370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalImmediateFMask = 0x1F800000, 5380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalImmediateMask = 0xFF800000, 5390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND_w_imm = LogicalImmediateFixed | AND, 5400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND_x_imm = LogicalImmediateFixed | AND | SixtyFourBits, 5410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR_w_imm = LogicalImmediateFixed | ORR, 5420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR_x_imm = LogicalImmediateFixed | ORR | SixtyFourBits, 5430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR_w_imm = LogicalImmediateFixed | EOR, 5440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR_x_imm = LogicalImmediateFixed | EOR | SixtyFourBits, 5450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS_w_imm = LogicalImmediateFixed | ANDS, 5460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS_x_imm = LogicalImmediateFixed | ANDS | SixtyFourBits 5470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Logical shifted register. 5500cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LogicalShiftedOp { 5510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalShiftedFixed = 0x0A000000, 5520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalShiftedFMask = 0x1F000000, 5530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LogicalShiftedMask = 0xFF200000, 5540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND_w = LogicalShiftedFixed | AND, 5550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND_x = LogicalShiftedFixed | AND | SixtyFourBits, 5560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl AND_shift = AND_w, 5570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BIC_w = LogicalShiftedFixed | BIC, 5580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BIC_x = LogicalShiftedFixed | BIC | SixtyFourBits, 5590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BIC_shift = BIC_w, 5600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR_w = LogicalShiftedFixed | ORR, 5610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR_x = LogicalShiftedFixed | ORR | SixtyFourBits, 5620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORR_shift = ORR_w, 5630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORN_w = LogicalShiftedFixed | ORN, 5640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORN_x = LogicalShiftedFixed | ORN | SixtyFourBits, 5650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ORN_shift = ORN_w, 5660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR_w = LogicalShiftedFixed | EOR, 5670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR_x = LogicalShiftedFixed | EOR | SixtyFourBits, 5680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EOR_shift = EOR_w, 5690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EON_w = LogicalShiftedFixed | EON, 5700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EON_x = LogicalShiftedFixed | EON | SixtyFourBits, 5710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EON_shift = EON_w, 5720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS_w = LogicalShiftedFixed | ANDS, 5730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS_x = LogicalShiftedFixed | ANDS | SixtyFourBits, 5740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ANDS_shift = ANDS_w, 5750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BICS_w = LogicalShiftedFixed | BICS, 5760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BICS_x = LogicalShiftedFixed | BICS | SixtyFourBits, 5770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BICS_shift = BICS_w 5780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Move wide immediate. 5810cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum MoveWideImmediateOp { 5820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MoveWideImmediateFixed = 0x12800000, 5830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MoveWideImmediateFMask = 0x1F800000, 5840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MoveWideImmediateMask = 0xFF800000, 5850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVN = 0x00000000, 5860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVZ = 0x40000000, 5870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVK = 0x60000000, 5880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVN_w = MoveWideImmediateFixed | MOVN, 5890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVN_x = MoveWideImmediateFixed | MOVN | SixtyFourBits, 5900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVZ_w = MoveWideImmediateFixed | MOVZ, 5910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVZ_x = MoveWideImmediateFixed | MOVZ | SixtyFourBits, 5920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVK_w = MoveWideImmediateFixed | MOVK, 5930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MOVK_x = MoveWideImmediateFixed | MOVK | SixtyFourBits 5940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 5950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 5960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Bitfield. 5970cc8b6ece4b3e757e11a906a81ece292437713abarmvixlconst int kBitfieldNOffset = 22; 5980cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum BitfieldOp { 5990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BitfieldFixed = 0x13000000, 6000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BitfieldFMask = 0x1F800000, 6010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BitfieldMask = 0xFF800000, 6020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBFM_w = BitfieldFixed | 0x00000000, 6030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBFM_x = BitfieldFixed | 0x80000000, 6040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SBFM = SBFM_w, 6050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BFM_w = BitfieldFixed | 0x20000000, 6060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BFM_x = BitfieldFixed | 0xA0000000, 6070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BFM = BFM_w, 6080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UBFM_w = BitfieldFixed | 0x40000000, 6090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UBFM_x = BitfieldFixed | 0xC0000000, 6100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UBFM = UBFM_w 6110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Bitfield N field. 6120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Extract. 6150cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ExtractOp { 6160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExtractFixed = 0x13800000, 6170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExtractFMask = 0x1F800000, 6180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExtractMask = 0xFFA00000, 6190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EXTR_w = ExtractFixed | 0x00000000, 6200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EXTR_x = ExtractFixed | 0x80000000, 6210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl EXTR = EXTR_w 6220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Unconditional branch. 6250cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum UnconditionalBranchOp { 6260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchFixed = 0x14000000, 6270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchFMask = 0x7C000000, 6280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchMask = 0xFC000000, 6290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl B = UnconditionalBranchFixed | 0x00000000, 6300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BL = UnconditionalBranchFixed | 0x80000000 6310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Unconditional branch to register. 6340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum UnconditionalBranchToRegisterOp { 6350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchToRegisterFixed = 0xD6000000, 6360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchToRegisterFMask = 0xFE000000, 6370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnconditionalBranchToRegisterMask = 0xFFFFFC1F, 6380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BR = UnconditionalBranchToRegisterFixed | 0x001F0000, 6390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BLR = UnconditionalBranchToRegisterFixed | 0x003F0000, 6400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RET = UnconditionalBranchToRegisterFixed | 0x005F0000 6410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Compare and branch. 6440cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum CompareBranchOp { 6450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CompareBranchFixed = 0x34000000, 6460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CompareBranchFMask = 0x7E000000, 6470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CompareBranchMask = 0xFF000000, 6480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBZ_w = CompareBranchFixed | 0x00000000, 6490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBZ_x = CompareBranchFixed | 0x80000000, 6500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBZ = CBZ_w, 6510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBNZ_w = CompareBranchFixed | 0x01000000, 6520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBNZ_x = CompareBranchFixed | 0x81000000, 6530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CBNZ = CBNZ_w 6540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Test and branch. 6570cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum TestBranchOp { 6580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl TestBranchFixed = 0x36000000, 6590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl TestBranchFMask = 0x7E000000, 6600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl TestBranchMask = 0x7F000000, 6610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl TBZ = TestBranchFixed | 0x00000000, 6620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl TBNZ = TestBranchFixed | 0x01000000 6630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conditional branch. 6660cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ConditionalBranchOp { 6670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalBranchFixed = 0x54000000, 6680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalBranchFMask = 0xFE000000, 6690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalBranchMask = 0xFF000010, 6700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl B_cond = ConditionalBranchFixed | 0x00000000 6710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// System. 6740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// System instruction encoding is complicated because some instructions use op 6750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// and CR fields to encode parameters. To handle this cleanly, the system 6760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// instructions are split into more than one enum. 6770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6780cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemOp { 6790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemFixed = 0xD5000000, 6800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemFMask = 0xFFC00000 6810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6830cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemSysRegOp { 6840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysRegFixed = 0xD5100000, 6850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysRegFMask = 0xFFD00000, 6860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysRegMask = 0xFFF00000, 6870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MRS = SystemSysRegFixed | 0x00200000, 6880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MSR = SystemSysRegFixed | 0x00000000 6890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6910cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemHintOp { 6920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemHintFixed = 0xD503201F, 6930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemHintFMask = 0xFFFFF01F, 6940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemHintMask = 0xFFFFF01F, 6950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl HINT = SystemHintFixed | 0x00000000 6960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 6970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 6980cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemSysOp { 6990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysFixed = 0xD5080000, 7000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysFMask = 0xFFF80000, 7010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemSysMask = 0xFFF80000, 7020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SYS = SystemSysFixed | 0x00000000 7030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Exception. 7060cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ExceptionOp { 7070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExceptionFixed = 0xD4000000, 7080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExceptionFMask = 0xFF000000, 7090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ExceptionMask = 0xFFE0001F, 7100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl HLT = ExceptionFixed | 0x00400000, 7110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl BRK = ExceptionFixed | 0x00200000, 7120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SVC = ExceptionFixed | 0x00000001, 7130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl HVC = ExceptionFixed | 0x00000002, 7140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SMC = ExceptionFixed | 0x00000003, 7150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DCPS1 = ExceptionFixed | 0x00A00001, 7160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DCPS2 = ExceptionFixed | 0x00A00002, 7170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DCPS3 = ExceptionFixed | 0x00A00003 7180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7200cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum MemBarrierOp { 7210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MemBarrierFixed = 0xD503309F, 7220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MemBarrierFMask = 0xFFFFF09F, 7230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MemBarrierMask = 0xFFFFF0FF, 7240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DSB = MemBarrierFixed | 0x00000000, 7250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DMB = MemBarrierFixed | 0x00000020, 7260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ISB = MemBarrierFixed | 0x00000040 7270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7290cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum SystemExclusiveMonitorOp { 7300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemExclusiveMonitorFixed = 0xD503305F, 7310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemExclusiveMonitorFMask = 0xFFFFF0FF, 7320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SystemExclusiveMonitorMask = 0xFFFFF0FF, 7330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLREX = SystemExclusiveMonitorFixed 7340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Any load or store. 7370cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreAnyOp { 7380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreAnyFMask = 0x0a000000, 7390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreAnyFixed = 0x08000000 7400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Any load pair or store pair. 7430cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairAnyOp { 7440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairAnyFMask = 0x3a000000, 7450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairAnyFixed = 0x28000000 7460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define LOAD_STORE_PAIR_OP_LIST(V) \ 7490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(STP, w, 0x00000000), \ 7500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDP, w, 0x00400000), \ 7510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDPSW, x, 0x40400000), \ 7520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(STP, x, 0x80000000), \ 7530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDP, x, 0x80400000), \ 7540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(STP, s, 0x04000000), \ 7550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDP, s, 0x04400000), \ 7560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(STP, d, 0x44000000), \ 7570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDP, d, 0x44400000), \ 7580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(STP, q, 0x84000000), \ 7590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LDP, q, 0x84400000) 7600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store pair (post, pre and offset.) 7620cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairOp { 7630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairMask = 0xC4400000, 7640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairLBit = 1 << 22, 7650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_PAIR(A, B, C) \ 7660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_##B = C 7670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR) 7680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_PAIR 7690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7710cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairPostIndexOp { 7720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPostIndexFixed = 0x28800000, 7730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPostIndexFMask = 0x3B800000, 7740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPostIndexMask = 0xFFC00000, 7750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_PAIR_POST_INDEX(A, B, C) \ 7760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_##B##_post = LoadStorePairPostIndexFixed | A##_##B 7770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_POST_INDEX) 7780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_PAIR_POST_INDEX 7790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7810cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairPreIndexOp { 7820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPreIndexFixed = 0x29800000, 7830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPreIndexFMask = 0x3B800000, 7840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairPreIndexMask = 0xFFC00000, 7850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_PAIR_PRE_INDEX(A, B, C) \ 7860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_##B##_pre = LoadStorePairPreIndexFixed | A##_##B 7870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_PRE_INDEX) 7880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_PAIR_PRE_INDEX 7890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 7900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 7910cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairOffsetOp { 7920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairOffsetFixed = 0x29000000, 7930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairOffsetFMask = 0x3B800000, 7940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairOffsetMask = 0xFFC00000, 7950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_PAIR_OFFSET(A, B, C) \ 7960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##_##B##_off = LoadStorePairOffsetFixed | A##_##B 7970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_OFFSET) 7980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_PAIR_OFFSET 7990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8010cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePairNonTemporalOp { 8020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairNonTemporalFixed = 0x28000000, 8030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairNonTemporalFMask = 0x3B800000, 8040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairNonTemporalMask = 0xFFC00000, 8050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePairNonTemporalLBit = 1 << 22, 8060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STNP_w = LoadStorePairNonTemporalFixed | STP_w, 8070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDNP_w = LoadStorePairNonTemporalFixed | LDP_w, 8080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STNP_x = LoadStorePairNonTemporalFixed | STP_x, 8090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDNP_x = LoadStorePairNonTemporalFixed | LDP_x, 8100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STNP_s = LoadStorePairNonTemporalFixed | STP_s, 8110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDNP_s = LoadStorePairNonTemporalFixed | LDP_s, 8120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STNP_d = LoadStorePairNonTemporalFixed | STP_d, 8130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDNP_d = LoadStorePairNonTemporalFixed | LDP_d, 8140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STNP_q = LoadStorePairNonTemporalFixed | STP_q, 8150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDNP_q = LoadStorePairNonTemporalFixed | LDP_q 8160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load literal. 8190cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadLiteralOp { 8200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadLiteralFixed = 0x18000000, 8210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadLiteralFMask = 0x3B000000, 8220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadLiteralMask = 0xFF000000, 8230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDR_w_lit = LoadLiteralFixed | 0x00000000, 8240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDR_x_lit = LoadLiteralFixed | 0x40000000, 8250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDRSW_x_lit = LoadLiteralFixed | 0x80000000, 8260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PRFM_lit = LoadLiteralFixed | 0xC0000000, 8270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDR_s_lit = LoadLiteralFixed | 0x04000000, 8280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDR_d_lit = LoadLiteralFixed | 0x44000000, 8290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDR_q_lit = LoadLiteralFixed | 0x84000000 8300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#define LOAD_STORE_OP_LIST(V) \ 8330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, RB, w, 0x00000000), \ 8340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, RH, w, 0x40000000), \ 8350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, w, 0x80000000), \ 8360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, x, 0xC0000000), \ 8370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RB, w, 0x00400000), \ 8380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RH, w, 0x40400000), \ 8390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, w, 0x80400000), \ 8400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, x, 0xC0400000), \ 8410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RSB, x, 0x00800000), \ 8420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RSH, x, 0x40800000), \ 8430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RSW, x, 0x80800000), \ 8440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RSB, w, 0x00C00000), \ 8450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, RSH, w, 0x40C00000), \ 8460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, b, 0x04000000), \ 8470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, h, 0x44000000), \ 8480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, s, 0x84000000), \ 8490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, d, 0xC4000000), \ 8500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(ST, R, q, 0x04800000), \ 8510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, b, 0x04400000), \ 8520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, h, 0x44400000), \ 8530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, s, 0x84400000), \ 8540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, d, 0xC4400000), \ 8550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl V(LD, R, q, 0x04C00000) 8560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store (post, pre, offset and unsigned.) 8580cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreOp { 8590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreMask = 0xC4C00000, 8600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreVMask = 0x04000000, 8610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE(A, B, C, D) \ 8620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##B##_##C = D 8630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE), 8640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE 8650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PRFM = 0xC0800000 8660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store unscaled offset. 8690cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreUnscaledOffsetOp { 8700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnscaledOffsetFixed = 0x38000000, 8710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnscaledOffsetFMask = 0x3B200C00, 8720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnscaledOffsetMask = 0xFFE00C00, 8730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PRFUM = LoadStoreUnscaledOffsetFixed | PRFM, 8740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_UNSCALED(A, B, C, D) \ 8750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##U##B##_##C = LoadStoreUnscaledOffsetFixed | D 8760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_UNSCALED) 8770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_UNSCALED 8780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store post index. 8810cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePostIndex { 8820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePostIndexFixed = 0x38000400, 8830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePostIndexFMask = 0x3B200C00, 8840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePostIndexMask = 0xFFE00C00, 8850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_POST_INDEX(A, B, C, D) \ 8860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##B##_##C##_post = LoadStorePostIndexFixed | D 8870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_POST_INDEX) 8880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_POST_INDEX 8890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 8900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 8910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store pre index. 8920cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStorePreIndex { 8930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePreIndexFixed = 0x38000C00, 8940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePreIndexFMask = 0x3B200C00, 8950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStorePreIndexMask = 0xFFE00C00, 8960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_PRE_INDEX(A, B, C, D) \ 8970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##B##_##C##_pre = LoadStorePreIndexFixed | D 8980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_PRE_INDEX) 8990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_PRE_INDEX 9000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store unsigned offset. 9030cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreUnsignedOffset { 9040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnsignedOffsetFixed = 0x39000000, 9050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnsignedOffsetFMask = 0x3B000000, 9060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreUnsignedOffsetMask = 0xFFC00000, 9070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PRFM_unsigned = LoadStoreUnsignedOffsetFixed | PRFM, 9080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_UNSIGNED_OFFSET(A, B, C, D) \ 9090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##B##_##C##_unsigned = LoadStoreUnsignedOffsetFixed | D 9100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_UNSIGNED_OFFSET) 9110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_UNSIGNED_OFFSET 9120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Load/store register offset. 9150cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreRegisterOffset { 9160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreRegisterOffsetFixed = 0x38200800, 9170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreRegisterOffsetFMask = 0x3B200C00, 9180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreRegisterOffsetMask = 0xFFE00C00, 9190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl PRFM_reg = LoadStoreRegisterOffsetFixed | PRFM, 9200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #define LOAD_STORE_REGISTER_OFFSET(A, B, C, D) \ 9210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl A##B##_##C##_reg = LoadStoreRegisterOffsetFixed | D 9220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LOAD_STORE_OP_LIST(LOAD_STORE_REGISTER_OFFSET) 9230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl #undef LOAD_STORE_REGISTER_OFFSET 9240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9260cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum LoadStoreExclusive { 9270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreExclusiveFixed = 0x08000000, 9280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreExclusiveFMask = 0x3F000000, 9290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LoadStoreExclusiveMask = 0xFFE08000, 9300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXRB_w = LoadStoreExclusiveFixed | 0x00000000, 9310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXRH_w = LoadStoreExclusiveFixed | 0x40000000, 9320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXR_w = LoadStoreExclusiveFixed | 0x80000000, 9330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXR_x = LoadStoreExclusiveFixed | 0xC0000000, 9340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXRB_w = LoadStoreExclusiveFixed | 0x00400000, 9350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXRH_w = LoadStoreExclusiveFixed | 0x40400000, 9360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXR_w = LoadStoreExclusiveFixed | 0x80400000, 9370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXR_x = LoadStoreExclusiveFixed | 0xC0400000, 9380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXP_w = LoadStoreExclusiveFixed | 0x80200000, 9390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STXP_x = LoadStoreExclusiveFixed | 0xC0200000, 9400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXP_w = LoadStoreExclusiveFixed | 0x80600000, 9410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDXP_x = LoadStoreExclusiveFixed | 0xC0600000, 9420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXRB_w = LoadStoreExclusiveFixed | 0x00008000, 9430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXRH_w = LoadStoreExclusiveFixed | 0x40008000, 9440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXR_w = LoadStoreExclusiveFixed | 0x80008000, 9450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXR_x = LoadStoreExclusiveFixed | 0xC0008000, 9460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXRB_w = LoadStoreExclusiveFixed | 0x00408000, 9470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXRH_w = LoadStoreExclusiveFixed | 0x40408000, 9480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXR_w = LoadStoreExclusiveFixed | 0x80408000, 9490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXR_x = LoadStoreExclusiveFixed | 0xC0408000, 9500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXP_w = LoadStoreExclusiveFixed | 0x80208000, 9510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLXP_x = LoadStoreExclusiveFixed | 0xC0208000, 9520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXP_w = LoadStoreExclusiveFixed | 0x80608000, 9530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAXP_x = LoadStoreExclusiveFixed | 0xC0608000, 9540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLRB_w = LoadStoreExclusiveFixed | 0x00808000, 9550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLRH_w = LoadStoreExclusiveFixed | 0x40808000, 9560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLR_w = LoadStoreExclusiveFixed | 0x80808000, 9570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl STLR_x = LoadStoreExclusiveFixed | 0xC0808000, 9580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDARB_w = LoadStoreExclusiveFixed | 0x00C08000, 9590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDARH_w = LoadStoreExclusiveFixed | 0x40C08000, 9600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAR_w = LoadStoreExclusiveFixed | 0x80C08000, 9610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LDAR_x = LoadStoreExclusiveFixed | 0xC0C08000 9620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conditional compare. 9650cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ConditionalCompareOp { 9660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareMask = 0x60000000, 9670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMN = 0x20000000, 9680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMP = 0x60000000 9690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conditional compare register. 9720cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ConditionalCompareRegisterOp { 9730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareRegisterFixed = 0x1A400000, 9740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareRegisterFMask = 0x1FE00800, 9750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareRegisterMask = 0xFFE00C10, 9760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMN_w = ConditionalCompareRegisterFixed | CCMN, 9770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMN_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMN, 9780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMP_w = ConditionalCompareRegisterFixed | CCMP, 9790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMP_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMP 9800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conditional compare immediate. 9830cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ConditionalCompareImmediateOp { 9840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareImmediateFixed = 0x1A400800, 9850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareImmediateFMask = 0x1FE00800, 9860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalCompareImmediateMask = 0xFFE00C10, 9870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMN_w_imm = ConditionalCompareImmediateFixed | CCMN, 9880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMN_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMN, 9890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMP_w_imm = ConditionalCompareImmediateFixed | CCMP, 9900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CCMP_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMP 9910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 9920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 9930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conditional select. 9940cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum ConditionalSelectOp { 9950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalSelectFixed = 0x1A800000, 9960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalSelectFMask = 0x1FE00000, 9970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ConditionalSelectMask = 0xFFE00C00, 9980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSEL_w = ConditionalSelectFixed | 0x00000000, 9990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSEL_x = ConditionalSelectFixed | 0x80000000, 10000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSEL = CSEL_w, 10010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINC_w = ConditionalSelectFixed | 0x00000400, 10020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINC_x = ConditionalSelectFixed | 0x80000400, 10030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINC = CSINC_w, 10040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINV_w = ConditionalSelectFixed | 0x40000000, 10050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINV_x = ConditionalSelectFixed | 0xC0000000, 10060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSINV = CSINV_w, 10070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSNEG_w = ConditionalSelectFixed | 0x40000400, 10080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSNEG_x = ConditionalSelectFixed | 0xC0000400, 10090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CSNEG = CSNEG_w 10100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 10110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 10120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Data processing 1 source. 10130cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum DataProcessing1SourceOp { 10140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing1SourceFixed = 0x5AC00000, 10150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing1SourceFMask = 0x5FE00000, 10160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing1SourceMask = 0xFFFFFC00, 10170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RBIT = DataProcessing1SourceFixed | 0x00000000, 10180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RBIT_w = RBIT, 10190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RBIT_x = RBIT | SixtyFourBits, 10200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV16 = DataProcessing1SourceFixed | 0x00000400, 10210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV16_w = REV16, 10220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV16_x = REV16 | SixtyFourBits, 10230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV = DataProcessing1SourceFixed | 0x00000800, 10240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV_w = REV, 10250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV32_x = REV | SixtyFourBits, 10260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl REV_x = DataProcessing1SourceFixed | SixtyFourBits | 0x00000C00, 10270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLZ = DataProcessing1SourceFixed | 0x00001000, 10280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLZ_w = CLZ, 10290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLZ_x = CLZ | SixtyFourBits, 10300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLS = DataProcessing1SourceFixed | 0x00001400, 10310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLS_w = CLS, 10320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CLS_x = CLS | SixtyFourBits 10330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 10340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 10350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Data processing 2 source. 10360cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum DataProcessing2SourceOp { 10370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing2SourceFixed = 0x1AC00000, 10380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing2SourceFMask = 0x5FE00000, 10390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing2SourceMask = 0xFFE0FC00, 10400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UDIV_w = DataProcessing2SourceFixed | 0x00000800, 10410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UDIV_x = DataProcessing2SourceFixed | 0x80000800, 10420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UDIV = UDIV_w, 10430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SDIV_w = DataProcessing2SourceFixed | 0x00000C00, 10440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SDIV_x = DataProcessing2SourceFixed | 0x80000C00, 10450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SDIV = SDIV_w, 10460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSLV_w = DataProcessing2SourceFixed | 0x00002000, 10470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSLV_x = DataProcessing2SourceFixed | 0x80002000, 10480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSLV = LSLV_w, 10490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSRV_w = DataProcessing2SourceFixed | 0x00002400, 10500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSRV_x = DataProcessing2SourceFixed | 0x80002400, 10510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl LSRV = LSRV_w, 10520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ASRV_w = DataProcessing2SourceFixed | 0x00002800, 10530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ASRV_x = DataProcessing2SourceFixed | 0x80002800, 10540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl ASRV = ASRV_w, 10550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RORV_w = DataProcessing2SourceFixed | 0x00002C00, 10560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RORV_x = DataProcessing2SourceFixed | 0x80002C00, 10570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl RORV = RORV_w, 10580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32B = DataProcessing2SourceFixed | 0x00004000, 10590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32H = DataProcessing2SourceFixed | 0x00004400, 10600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32W = DataProcessing2SourceFixed | 0x00004800, 10610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32X = DataProcessing2SourceFixed | SixtyFourBits | 0x00004C00, 10620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32CB = DataProcessing2SourceFixed | 0x00005000, 10630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32CH = DataProcessing2SourceFixed | 0x00005400, 10640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32CW = DataProcessing2SourceFixed | 0x00005800, 10650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CRC32CX = DataProcessing2SourceFixed | SixtyFourBits | 0x00005C00 10660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 10670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 10680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Data processing 3 source. 10690cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum DataProcessing3SourceOp { 10700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing3SourceFixed = 0x1B000000, 10710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing3SourceFMask = 0x1F000000, 10720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl DataProcessing3SourceMask = 0xFFE08000, 10730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MADD_w = DataProcessing3SourceFixed | 0x00000000, 10740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MADD_x = DataProcessing3SourceFixed | 0x80000000, 10750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MADD = MADD_w, 10760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MSUB_w = DataProcessing3SourceFixed | 0x00008000, 10770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MSUB_x = DataProcessing3SourceFixed | 0x80008000, 10780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl MSUB = MSUB_w, 10790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SMADDL_x = DataProcessing3SourceFixed | 0x80200000, 10800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SMSUBL_x = DataProcessing3SourceFixed | 0x80208000, 10810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SMULH_x = DataProcessing3SourceFixed | 0x80400000, 10820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UMADDL_x = DataProcessing3SourceFixed | 0x80A00000, 10830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UMSUBL_x = DataProcessing3SourceFixed | 0x80A08000, 10840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UMULH_x = DataProcessing3SourceFixed | 0x80C00000 10850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 10860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 10870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point compare. 10880cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPCompareOp { 10890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPCompareFixed = 0x1E202000, 10900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPCompareFMask = 0x5F203C00, 10910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPCompareMask = 0xFFE0FC1F, 10920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP_s = FPCompareFixed | 0x00000000, 10930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP_d = FPCompareFixed | FP64 | 0x00000000, 10940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP = FCMP_s, 10950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP_s_zero = FPCompareFixed | 0x00000008, 10960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP_d_zero = FPCompareFixed | FP64 | 0x00000008, 10970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMP_zero = FCMP_s_zero, 10980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE_s = FPCompareFixed | 0x00000010, 10990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE_d = FPCompareFixed | FP64 | 0x00000010, 11000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE = FCMPE_s, 11010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE_s_zero = FPCompareFixed | 0x00000018, 11020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE_d_zero = FPCompareFixed | FP64 | 0x00000018, 11030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCMPE_zero = FCMPE_s_zero 11040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 11050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 11060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point conditional compare. 11070cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPConditionalCompareOp { 11080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalCompareFixed = 0x1E200400, 11090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalCompareFMask = 0x5F200C00, 11100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalCompareMask = 0xFFE00C10, 11110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMP_s = FPConditionalCompareFixed | 0x00000000, 11120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMP_d = FPConditionalCompareFixed | FP64 | 0x00000000, 11130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMP = FCCMP_s, 11140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMPE_s = FPConditionalCompareFixed | 0x00000010, 11150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMPE_d = FPConditionalCompareFixed | FP64 | 0x00000010, 11160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCCMPE = FCCMPE_s 11170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 11180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 11190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point conditional select. 11200cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPConditionalSelectOp { 11210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalSelectFixed = 0x1E200C00, 11220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalSelectFMask = 0x5F200C00, 11230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPConditionalSelectMask = 0xFFE00C00, 11240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCSEL_s = FPConditionalSelectFixed | 0x00000000, 11250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCSEL_d = FPConditionalSelectFixed | FP64 | 0x00000000, 11260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCSEL = FCSEL_s 11270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 11280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 11290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point immediate. 11300cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPImmediateOp { 11310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPImmediateFixed = 0x1E201000, 11320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPImmediateFMask = 0x5F201C00, 11330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPImmediateMask = 0xFFE01C00, 11340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_s_imm = FPImmediateFixed | 0x00000000, 11350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_d_imm = FPImmediateFixed | FP64 | 0x00000000 11360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 11370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 11380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point data processing 1 source. 11390cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPDataProcessing1SourceOp { 11400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing1SourceFixed = 0x1E204000, 11410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing1SourceFMask = 0x5F207C00, 11420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing1SourceMask = 0xFFFFFC00, 11430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_s = FPDataProcessing1SourceFixed | 0x00000000, 11440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_d = FPDataProcessing1SourceFixed | FP64 | 0x00000000, 11450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV = FMOV_s, 11460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FABS_s = FPDataProcessing1SourceFixed | 0x00008000, 11470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FABS_d = FPDataProcessing1SourceFixed | FP64 | 0x00008000, 11480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FABS = FABS_s, 11490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNEG_s = FPDataProcessing1SourceFixed | 0x00010000, 11500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNEG_d = FPDataProcessing1SourceFixed | FP64 | 0x00010000, 11510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNEG = FNEG_s, 11520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSQRT_s = FPDataProcessing1SourceFixed | 0x00018000, 11530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSQRT_d = FPDataProcessing1SourceFixed | FP64 | 0x00018000, 11540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSQRT = FSQRT_s, 11550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_ds = FPDataProcessing1SourceFixed | 0x00028000, 11560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_sd = FPDataProcessing1SourceFixed | FP64 | 0x00020000, 11570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_hs = FPDataProcessing1SourceFixed | 0x00038000, 11580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_hd = FPDataProcessing1SourceFixed | FP64 | 0x00038000, 11590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_sh = FPDataProcessing1SourceFixed | 0x00C20000, 11600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVT_dh = FPDataProcessing1SourceFixed | 0x00C28000, 11610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTN_s = FPDataProcessing1SourceFixed | 0x00040000, 11620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTN_d = FPDataProcessing1SourceFixed | FP64 | 0x00040000, 11630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTN = FRINTN_s, 11640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTP_s = FPDataProcessing1SourceFixed | 0x00048000, 11650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTP_d = FPDataProcessing1SourceFixed | FP64 | 0x00048000, 11660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTP = FRINTP_s, 11670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTM_s = FPDataProcessing1SourceFixed | 0x00050000, 11680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTM_d = FPDataProcessing1SourceFixed | FP64 | 0x00050000, 11690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTM = FRINTM_s, 11700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTZ_s = FPDataProcessing1SourceFixed | 0x00058000, 11710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTZ_d = FPDataProcessing1SourceFixed | FP64 | 0x00058000, 11720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTZ = FRINTZ_s, 11730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTA_s = FPDataProcessing1SourceFixed | 0x00060000, 11740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTA_d = FPDataProcessing1SourceFixed | FP64 | 0x00060000, 11750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTA = FRINTA_s, 11760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTX_s = FPDataProcessing1SourceFixed | 0x00070000, 11770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTX_d = FPDataProcessing1SourceFixed | FP64 | 0x00070000, 11780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTX = FRINTX_s, 11790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTI_s = FPDataProcessing1SourceFixed | 0x00078000, 11800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTI_d = FPDataProcessing1SourceFixed | FP64 | 0x00078000, 11810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FRINTI = FRINTI_s 11820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 11830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 11840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point data processing 2 source. 11850cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPDataProcessing2SourceOp { 11860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing2SourceFixed = 0x1E200800, 11870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing2SourceFMask = 0x5F200C00, 11880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing2SourceMask = 0xFFE0FC00, 11890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMUL = FPDataProcessing2SourceFixed | 0x00000000, 11900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMUL_s = FMUL, 11910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMUL_d = FMUL | FP64, 11920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FDIV = FPDataProcessing2SourceFixed | 0x00001000, 11930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FDIV_s = FDIV, 11940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FDIV_d = FDIV | FP64, 11950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FADD = FPDataProcessing2SourceFixed | 0x00002000, 11960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FADD_s = FADD, 11970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FADD_d = FADD | FP64, 11980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSUB = FPDataProcessing2SourceFixed | 0x00003000, 11990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSUB_s = FSUB, 12000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FSUB_d = FSUB | FP64, 12010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAX = FPDataProcessing2SourceFixed | 0x00004000, 12020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAX_s = FMAX, 12030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAX_d = FMAX | FP64, 12040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMIN = FPDataProcessing2SourceFixed | 0x00005000, 12050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMIN_s = FMIN, 12060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMIN_d = FMIN | FP64, 12070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAXNM = FPDataProcessing2SourceFixed | 0x00006000, 12080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAXNM_s = FMAXNM, 12090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMAXNM_d = FMAXNM | FP64, 12100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMINNM = FPDataProcessing2SourceFixed | 0x00007000, 12110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMINNM_s = FMINNM, 12120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMINNM_d = FMINNM | FP64, 12130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMUL = FPDataProcessing2SourceFixed | 0x00008000, 12140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMUL_s = FNMUL, 12150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMUL_d = FNMUL | FP64 12160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 12170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 12180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Floating point data processing 3 source. 12190cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPDataProcessing3SourceOp { 12200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing3SourceFixed = 0x1F000000, 12210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing3SourceFMask = 0x5F000000, 12220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPDataProcessing3SourceMask = 0xFFE08000, 12230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMADD_s = FPDataProcessing3SourceFixed | 0x00000000, 12240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMSUB_s = FPDataProcessing3SourceFixed | 0x00008000, 12250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMADD_s = FPDataProcessing3SourceFixed | 0x00200000, 12260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMSUB_s = FPDataProcessing3SourceFixed | 0x00208000, 12270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMADD_d = FPDataProcessing3SourceFixed | 0x00400000, 12280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMSUB_d = FPDataProcessing3SourceFixed | 0x00408000, 12290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMADD_d = FPDataProcessing3SourceFixed | 0x00600000, 12300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FNMSUB_d = FPDataProcessing3SourceFixed | 0x00608000 12310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 12320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 12330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conversion between floating point and integer. 12340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPIntegerConvertOp { 12350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPIntegerConvertFixed = 0x1E200000, 12360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPIntegerConvertFMask = 0x5F20FC00, 12370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPIntegerConvertMask = 0xFFFFFC00, 12380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNS = FPIntegerConvertFixed | 0x00000000, 12390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNS_ws = FCVTNS, 12400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNS_xs = FCVTNS | SixtyFourBits, 12410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNS_wd = FCVTNS | FP64, 12420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNS_xd = FCVTNS | SixtyFourBits | FP64, 12430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNU = FPIntegerConvertFixed | 0x00010000, 12440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNU_ws = FCVTNU, 12450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNU_xs = FCVTNU | SixtyFourBits, 12460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNU_wd = FCVTNU | FP64, 12470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTNU_xd = FCVTNU | SixtyFourBits | FP64, 12480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPS = FPIntegerConvertFixed | 0x00080000, 12490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPS_ws = FCVTPS, 12500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPS_xs = FCVTPS | SixtyFourBits, 12510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPS_wd = FCVTPS | FP64, 12520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPS_xd = FCVTPS | SixtyFourBits | FP64, 12530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPU = FPIntegerConvertFixed | 0x00090000, 12540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPU_ws = FCVTPU, 12550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPU_xs = FCVTPU | SixtyFourBits, 12560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPU_wd = FCVTPU | FP64, 12570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTPU_xd = FCVTPU | SixtyFourBits | FP64, 12580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMS = FPIntegerConvertFixed | 0x00100000, 12590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMS_ws = FCVTMS, 12600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMS_xs = FCVTMS | SixtyFourBits, 12610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMS_wd = FCVTMS | FP64, 12620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMS_xd = FCVTMS | SixtyFourBits | FP64, 12630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMU = FPIntegerConvertFixed | 0x00110000, 12640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMU_ws = FCVTMU, 12650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMU_xs = FCVTMU | SixtyFourBits, 12660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMU_wd = FCVTMU | FP64, 12670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTMU_xd = FCVTMU | SixtyFourBits | FP64, 12680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS = FPIntegerConvertFixed | 0x00180000, 12690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_ws = FCVTZS, 12700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_xs = FCVTZS | SixtyFourBits, 12710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_wd = FCVTZS | FP64, 12720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_xd = FCVTZS | SixtyFourBits | FP64, 12730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU = FPIntegerConvertFixed | 0x00190000, 12740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_ws = FCVTZU, 12750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_xs = FCVTZU | SixtyFourBits, 12760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_wd = FCVTZU | FP64, 12770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_xd = FCVTZU | SixtyFourBits | FP64, 12780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF = FPIntegerConvertFixed | 0x00020000, 12790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_sw = SCVTF, 12800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_sx = SCVTF | SixtyFourBits, 12810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_dw = SCVTF | FP64, 12820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_dx = SCVTF | SixtyFourBits | FP64, 12830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF = FPIntegerConvertFixed | 0x00030000, 12840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_sw = UCVTF, 12850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_sx = UCVTF | SixtyFourBits, 12860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_dw = UCVTF | FP64, 12870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_dx = UCVTF | SixtyFourBits | FP64, 12880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAS = FPIntegerConvertFixed | 0x00040000, 12890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAS_ws = FCVTAS, 12900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAS_xs = FCVTAS | SixtyFourBits, 12910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAS_wd = FCVTAS | FP64, 12920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAS_xd = FCVTAS | SixtyFourBits | FP64, 12930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAU = FPIntegerConvertFixed | 0x00050000, 12940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAU_ws = FCVTAU, 12950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAU_xs = FCVTAU | SixtyFourBits, 12960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAU_wd = FCVTAU | FP64, 12970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTAU_xd = FCVTAU | SixtyFourBits | FP64, 12980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_ws = FPIntegerConvertFixed | 0x00060000, 12990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_sw = FPIntegerConvertFixed | 0x00070000, 13000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_xd = FMOV_ws | SixtyFourBits | FP64, 13010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_dx = FMOV_sw | SixtyFourBits | FP64, 13020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_d1_x = FPIntegerConvertFixed | SixtyFourBits | 0x008F0000, 13030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FMOV_x_d1 = FPIntegerConvertFixed | SixtyFourBits | 0x008E0000 13040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 13050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Conversion between fixed point and floating point. 13070cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum FPFixedPointConvertOp { 13080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPFixedPointConvertFixed = 0x1E000000, 13090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPFixedPointConvertFMask = 0x5F200000, 13100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FPFixedPointConvertMask = 0xFFFF0000, 13110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_fixed = FPFixedPointConvertFixed | 0x00180000, 13120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_ws_fixed = FCVTZS_fixed, 13130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_xs_fixed = FCVTZS_fixed | SixtyFourBits, 13140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_wd_fixed = FCVTZS_fixed | FP64, 13150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZS_xd_fixed = FCVTZS_fixed | SixtyFourBits | FP64, 13160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_fixed = FPFixedPointConvertFixed | 0x00190000, 13170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_ws_fixed = FCVTZU_fixed, 13180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_xs_fixed = FCVTZU_fixed | SixtyFourBits, 13190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_wd_fixed = FCVTZU_fixed | FP64, 13200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl FCVTZU_xd_fixed = FCVTZU_fixed | SixtyFourBits | FP64, 13210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_fixed = FPFixedPointConvertFixed | 0x00020000, 13220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_sw_fixed = SCVTF_fixed, 13230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_sx_fixed = SCVTF_fixed | SixtyFourBits, 13240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_dw_fixed = SCVTF_fixed | FP64, 13250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl SCVTF_dx_fixed = SCVTF_fixed | SixtyFourBits | FP64, 13260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_fixed = FPFixedPointConvertFixed | 0x00030000, 13270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_sw_fixed = UCVTF_fixed, 13280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_sx_fixed = UCVTF_fixed | SixtyFourBits, 13290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_dw_fixed = UCVTF_fixed | FP64, 13300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UCVTF_dx_fixed = UCVTF_fixed | SixtyFourBits | FP64 13310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 13320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Crypto - two register SHA. 13340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum Crypto2RegSHAOp { 13350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl Crypto2RegSHAFixed = 0x5E280800, 13360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl Crypto2RegSHAFMask = 0xFF3E0C00 13370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 13380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Crypto - three register SHA. 13400cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum Crypto3RegSHAOp { 13410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl Crypto3RegSHAFixed = 0x5E000000, 13420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl Crypto3RegSHAFMask = 0xFF208C00 13430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 13440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Crypto - AES. 13460cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum CryptoAESOp { 13470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CryptoAESFixed = 0x4E280800, 13480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl CryptoAESFMask = 0xFF3E0C00 13490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 13500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON instructions with two register operands. 13520cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEON2RegMiscOp { 13530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscFixed = 0x0E200800, 13540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscFMask = 0x9F3E0C00, 13550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscMask = 0xBF3FFC00, 13560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscUBit = 0x20000000, 13570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_REV64 = NEON2RegMiscFixed | 0x00000000, 13580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_REV32 = NEON2RegMiscFixed | 0x20000000, 13590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_REV16 = NEON2RegMiscFixed | 0x00001000, 13600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDLP = NEON2RegMiscFixed | 0x00002000, 13610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDLP = NEON_SADDLP | NEON2RegMiscUBit, 13620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUQADD = NEON2RegMiscFixed | 0x00003000, 13630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USQADD = NEON_SUQADD | NEON2RegMiscUBit, 13640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CLS = NEON2RegMiscFixed | 0x00004000, 13650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CLZ = NEON2RegMiscFixed | 0x20004000, 13660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CNT = NEON2RegMiscFixed | 0x00005000, 13670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RBIT_NOT = NEON2RegMiscFixed | 0x20005000, 13680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADALP = NEON2RegMiscFixed | 0x00006000, 13690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADALP = NEON_SADALP | NEON2RegMiscUBit, 13700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQABS = NEON2RegMiscFixed | 0x00007000, 13710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQNEG = NEON2RegMiscFixed | 0x20007000, 13720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGT_zero = NEON2RegMiscFixed | 0x00008000, 13730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGE_zero = NEON2RegMiscFixed | 0x20008000, 13740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMEQ_zero = NEON2RegMiscFixed | 0x00009000, 13750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMLE_zero = NEON2RegMiscFixed | 0x20009000, 13760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMLT_zero = NEON2RegMiscFixed | 0x0000A000, 13770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ABS = NEON2RegMiscFixed | 0x0000B000, 13780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_NEG = NEON2RegMiscFixed | 0x2000B000, 13790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_XTN = NEON2RegMiscFixed | 0x00012000, 13800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQXTUN = NEON2RegMiscFixed | 0x20012000, 13810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHLL = NEON2RegMiscFixed | 0x20013000, 13820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQXTN = NEON2RegMiscFixed | 0x00014000, 13830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQXTN = NEON_SQXTN | NEON2RegMiscUBit, 13840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscOpcode = 0x0001F000, 13860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RBIT_NOT_opcode = NEON_RBIT_NOT & NEON2RegMiscOpcode, 13870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_NEG_opcode = NEON_NEG & NEON2RegMiscOpcode, 13880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_XTN_opcode = NEON_XTN & NEON2RegMiscOpcode, 13890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQXTN_opcode = NEON_UQXTN & NEON2RegMiscOpcode, 13900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 13910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // These instructions use only one bit of the size field. The other bit is 13920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // used to distinguish between instructions. 13930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON2RegMiscFPMask = NEON2RegMiscMask | 0x00800000, 13940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FABS = NEON2RegMiscFixed | 0x0080F000, 13950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FNEG = NEON2RegMiscFixed | 0x2080F000, 13960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTN = NEON2RegMiscFixed | 0x00016000, 13970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTXN = NEON2RegMiscFixed | 0x20016000, 13980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTL = NEON2RegMiscFixed | 0x00017000, 13990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTN = NEON2RegMiscFixed | 0x00018000, 14000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTA = NEON2RegMiscFixed | 0x20018000, 14010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTP = NEON2RegMiscFixed | 0x00818000, 14020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTM = NEON2RegMiscFixed | 0x00019000, 14030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTX = NEON2RegMiscFixed | 0x20019000, 14040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTZ = NEON2RegMiscFixed | 0x00819000, 14050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRINTI = NEON2RegMiscFixed | 0x20819000, 14060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTNS = NEON2RegMiscFixed | 0x0001A000, 14070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTNU = NEON_FCVTNS | NEON2RegMiscUBit, 14080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTPS = NEON2RegMiscFixed | 0x0081A000, 14090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTPU = NEON_FCVTPS | NEON2RegMiscUBit, 14100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTMS = NEON2RegMiscFixed | 0x0001B000, 14110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTMU = NEON_FCVTMS | NEON2RegMiscUBit, 14120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZS = NEON2RegMiscFixed | 0x0081B000, 14130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZU = NEON_FCVTZS | NEON2RegMiscUBit, 14140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTAS = NEON2RegMiscFixed | 0x0001C000, 14150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTAU = NEON_FCVTAS | NEON2RegMiscUBit, 14160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FSQRT = NEON2RegMiscFixed | 0x2081F000, 14170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SCVTF = NEON2RegMiscFixed | 0x0001D000, 14180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UCVTF = NEON_SCVTF | NEON2RegMiscUBit, 14190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSQRTE = NEON2RegMiscFixed | 0x2081C000, 14200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URECPE = NEON2RegMiscFixed | 0x0081C000, 14210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRSQRTE = NEON2RegMiscFixed | 0x2081D000, 14220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRECPE = NEON2RegMiscFixed | 0x0081D000, 14230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGT_zero = NEON2RegMiscFixed | 0x0080C000, 14240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGE_zero = NEON2RegMiscFixed | 0x2080C000, 14250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMEQ_zero = NEON2RegMiscFixed | 0x0080D000, 14260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMLE_zero = NEON2RegMiscFixed | 0x2080D000, 14270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMLT_zero = NEON2RegMiscFixed | 0x0080E000, 14280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 14290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTL_opcode = NEON_FCVTL & NEON2RegMiscOpcode, 14300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTN_opcode = NEON_FCVTN & NEON2RegMiscOpcode 14310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 14320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 14330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON instructions with three same-type operands. 14340cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEON3SameOp { 14350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameFixed = 0x0E200400, 14360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameFMask = 0x9F200400, 14370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameMask = 0xBF20FC00, 14380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameUBit = 0x20000000, 14390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADD = NEON3SameFixed | 0x00008000, 14400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADDP = NEON3SameFixed | 0x0000B800, 14410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHADD = NEON3SameFixed | 0x00000000, 14420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHSUB = NEON3SameFixed | 0x00002000, 14430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRHADD = NEON3SameFixed | 0x00001000, 14440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMEQ = NEON3SameFixed | NEON3SameUBit | 0x00008800, 14450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGE = NEON3SameFixed | 0x00003800, 14460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGT = NEON3SameFixed | 0x00003000, 14470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMHI = NEON3SameFixed | NEON3SameUBit | NEON_CMGT, 14480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMHS = NEON3SameFixed | NEON3SameUBit | NEON_CMGE, 14490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMTST = NEON3SameFixed | 0x00008800, 14500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MLA = NEON3SameFixed | 0x00009000, 14510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MLS = NEON3SameFixed | 0x20009000, 14520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MUL = NEON3SameFixed | 0x00009800, 14530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_PMUL = NEON3SameFixed | 0x20009800, 14540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSHL = NEON3SameFixed | 0x00005000, 14550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHL = NEON3SameFixed | 0x00004800, 14560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHL = NEON3SameFixed | 0x00005800, 14570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSHL = NEON3SameFixed | 0x00004000, 14580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMAX = NEON3SameFixed | 0x00006000, 14590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMAXP = NEON3SameFixed | 0x0000A000, 14600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMIN = NEON3SameFixed | 0x00006800, 14610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMINP = NEON3SameFixed | 0x0000A800, 14620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABD = NEON3SameFixed | 0x00007000, 14630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABA = NEON3SameFixed | 0x00007800, 14640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABD = NEON3SameFixed | NEON3SameUBit | NEON_SABD, 14650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABA = NEON3SameFixed | NEON3SameUBit | NEON_SABA, 14660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQADD = NEON3SameFixed | 0x00000800, 14670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSUB = NEON3SameFixed | 0x00002800, 14680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUB = NEON3SameFixed | NEON3SameUBit | 0x00008000, 14690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UHADD = NEON3SameFixed | NEON3SameUBit | NEON_SHADD, 14700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UHSUB = NEON3SameFixed | NEON3SameUBit | NEON_SHSUB, 14710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URHADD = NEON3SameFixed | NEON3SameUBit | NEON_SRHADD, 14720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMAX = NEON3SameFixed | NEON3SameUBit | NEON_SMAX, 14730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMAXP = NEON3SameFixed | NEON3SameUBit | NEON_SMAXP, 14740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMIN = NEON3SameFixed | NEON3SameUBit | NEON_SMIN, 14750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMINP = NEON3SameFixed | NEON3SameUBit | NEON_SMINP, 14760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSHL = NEON3SameFixed | NEON3SameUBit | NEON_SRSHL, 14770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQADD = NEON3SameFixed | NEON3SameUBit | NEON_SQADD, 14780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQRSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQRSHL, 14790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQSHL, 14800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSUB = NEON3SameFixed | NEON3SameUBit | NEON_SQSUB, 14810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USHL = NEON3SameFixed | NEON3SameUBit | NEON_SSHL, 14820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULH = NEON3SameFixed | 0x0000B000, 14830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRDMULH = NEON3SameFixed | 0x2000B000, 14840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 14850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // NEON floating point instructions with three same-type operands. 14860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameFPFixed = NEON3SameFixed | 0x0000C000, 14870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameFPFMask = NEON3SameFMask | 0x0000C000, 14880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameFPMask = NEON3SameMask | 0x00800000, 14890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FADD = NEON3SameFixed | 0x0000D000, 14900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FSUB = NEON3SameFixed | 0x0080D000, 14910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMUL = NEON3SameFixed | 0x2000D800, 14920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FDIV = NEON3SameFixed | 0x2000F800, 14930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAX = NEON3SameFixed | 0x0000F000, 14940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXNM = NEON3SameFixed | 0x0000C000, 14950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXP = NEON3SameFixed | 0x2000F000, 14960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXNMP = NEON3SameFixed | 0x2000C000, 14970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMIN = NEON3SameFixed | 0x0080F000, 14980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINNM = NEON3SameFixed | 0x0080C000, 14990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINP = NEON3SameFixed | 0x2080F000, 15000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINNMP = NEON3SameFixed | 0x2080C000, 15010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLA = NEON3SameFixed | 0x0000C800, 15020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLS = NEON3SameFixed | 0x0080C800, 15030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMULX = NEON3SameFixed | 0x0000D800, 15040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRECPS = NEON3SameFixed | 0x0000F800, 15050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRSQRTS = NEON3SameFixed | 0x0080F800, 15060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FABD = NEON3SameFixed | 0x2080D000, 15070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FADDP = NEON3SameFixed | 0x2000D000, 15080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMEQ = NEON3SameFixed | 0x0000E000, 15090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGE = NEON3SameFixed | 0x2000E000, 15100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGT = NEON3SameFixed | 0x2080E000, 15110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FACGE = NEON3SameFixed | 0x2000E800, 15120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FACGT = NEON3SameFixed | 0x2080E800, 15130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 15140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // NEON logical instructions with three same-type operands. 15150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameLogicalFixed = NEON3SameFixed | 0x00001800, 15160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameLogicalFMask = NEON3SameFMask | 0x0000F800, 15170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameLogicalMask = 0xBFE0FC00, 15180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3SameLogicalFormatMask = NEON_Q, 15190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_AND = NEON3SameLogicalFixed | 0x00000000, 15200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ORR = NEON3SameLogicalFixed | 0x00A00000, 15210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ORN = NEON3SameLogicalFixed | 0x00C00000, 15220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_EOR = NEON3SameLogicalFixed | 0x20000000, 15230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_BIC = NEON3SameLogicalFixed | 0x00400000, 15240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_BIF = NEON3SameLogicalFixed | 0x20C00000, 15250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_BIT = NEON3SameLogicalFixed | 0x20800000, 15260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_BSL = NEON3SameLogicalFixed | 0x20400000 15270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 15280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 15290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON instructions with three different-type operands. 15300cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEON3DifferentOp { 15310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3DifferentFixed = 0x0E200000, 15320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3DifferentFMask = 0x9F200C00, 15330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON3DifferentMask = 0xFF20FC00, 15340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADDHN = NEON3DifferentFixed | 0x00004000, 15350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADDHN2 = NEON_ADDHN | NEON_Q, 15360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_PMULL = NEON3DifferentFixed | 0x0000E000, 15370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_PMULL2 = NEON_PMULL | NEON_Q, 15380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RADDHN = NEON3DifferentFixed | 0x20004000, 15390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RADDHN2 = NEON_RADDHN | NEON_Q, 15400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RSUBHN = NEON3DifferentFixed | 0x20006000, 15410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RSUBHN2 = NEON_RSUBHN | NEON_Q, 15420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABAL = NEON3DifferentFixed | 0x00005000, 15430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABAL2 = NEON_SABAL | NEON_Q, 15440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABDL = NEON3DifferentFixed | 0x00007000, 15450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SABDL2 = NEON_SABDL | NEON_Q, 15460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDL = NEON3DifferentFixed | 0x00000000, 15470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDL2 = NEON_SADDL | NEON_Q, 15480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDW = NEON3DifferentFixed | 0x00001000, 15490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDW2 = NEON_SADDW | NEON_Q, 15500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLAL = NEON3DifferentFixed | 0x00008000, 15510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLAL2 = NEON_SMLAL | NEON_Q, 15520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLSL = NEON3DifferentFixed | 0x0000A000, 15530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLSL2 = NEON_SMLSL | NEON_Q, 15540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMULL = NEON3DifferentFixed | 0x0000C000, 15550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMULL2 = NEON_SMULL | NEON_Q, 15560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSUBL = NEON3DifferentFixed | 0x00002000, 15570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSUBL2 = NEON_SSUBL | NEON_Q, 15580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSUBW = NEON3DifferentFixed | 0x00003000, 15590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSUBW2 = NEON_SSUBW | NEON_Q, 15600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLAL = NEON3DifferentFixed | 0x00009000, 15610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLAL2 = NEON_SQDMLAL | NEON_Q, 15620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLSL = NEON3DifferentFixed | 0x0000B000, 15630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLSL2 = NEON_SQDMLSL | NEON_Q, 15640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULL = NEON3DifferentFixed | 0x0000D000, 15650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULL2 = NEON_SQDMULL | NEON_Q, 15660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUBHN = NEON3DifferentFixed | 0x00006000, 15670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUBHN2 = NEON_SUBHN | NEON_Q, 15680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABAL = NEON_SABAL | NEON3SameUBit, 15690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABAL2 = NEON_UABAL | NEON_Q, 15700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABDL = NEON_SABDL | NEON3SameUBit, 15710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UABDL2 = NEON_UABDL | NEON_Q, 15720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDL = NEON_SADDL | NEON3SameUBit, 15730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDL2 = NEON_UADDL | NEON_Q, 15740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDW = NEON_SADDW | NEON3SameUBit, 15750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDW2 = NEON_UADDW | NEON_Q, 15760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLAL = NEON_SMLAL | NEON3SameUBit, 15770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLAL2 = NEON_UMLAL | NEON_Q, 15780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLSL = NEON_SMLSL | NEON3SameUBit, 15790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLSL2 = NEON_UMLSL | NEON_Q, 15800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMULL = NEON_SMULL | NEON3SameUBit, 15810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMULL2 = NEON_UMULL | NEON_Q, 15820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USUBL = NEON_SSUBL | NEON3SameUBit, 15830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USUBL2 = NEON_USUBL | NEON_Q, 15840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USUBW = NEON_SSUBW | NEON3SameUBit, 15850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USUBW2 = NEON_USUBW | NEON_Q 15860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 15870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 15880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON instructions operating across vectors. 15890cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONAcrossLanesOp { 15900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesFixed = 0x0E300800, 15910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesFMask = 0x9F3E0C00, 15920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesMask = 0xBF3FFC00, 15930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADDV = NEONAcrossLanesFixed | 0x0001B000, 15940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SADDLV = NEONAcrossLanesFixed | 0x00003000, 15950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UADDLV = NEONAcrossLanesFixed | 0x20003000, 15960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMAXV = NEONAcrossLanesFixed | 0x0000A000, 15970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMINV = NEONAcrossLanesFixed | 0x0001A000, 15980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMAXV = NEONAcrossLanesFixed | 0x2000A000, 15990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMINV = NEONAcrossLanesFixed | 0x2001A000, 16000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // NEON floating point across instructions. 16020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesFPFixed = NEONAcrossLanesFixed | 0x0000C000, 16030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesFPFMask = NEONAcrossLanesFMask | 0x0000C000, 16040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONAcrossLanesFPMask = NEONAcrossLanesMask | 0x00800000, 16050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXV = NEONAcrossLanesFPFixed | 0x2000F000, 16070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINV = NEONAcrossLanesFPFixed | 0x2080F000, 16080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXNMV = NEONAcrossLanesFPFixed | 0x2000C000, 16090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINNMV = NEONAcrossLanesFPFixed | 0x2080C000 16100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 16110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON instructions with indexed element operand. 16130cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONByIndexedElementOp { 16140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONByIndexedElementFixed = 0x0F000000, 16150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONByIndexedElementFMask = 0x9F000400, 16160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONByIndexedElementMask = 0xBF00F400, 16170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MUL_byelement = NEONByIndexedElementFixed | 0x00008000, 16180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MLA_byelement = NEONByIndexedElementFixed | 0x20000000, 16190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_MLS_byelement = NEONByIndexedElementFixed | 0x20004000, 16200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMULL_byelement = NEONByIndexedElementFixed | 0x0000A000, 16210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLAL_byelement = NEONByIndexedElementFixed | 0x00002000, 16220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMLSL_byelement = NEONByIndexedElementFixed | 0x00006000, 16230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMULL_byelement = NEONByIndexedElementFixed | 0x2000A000, 16240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLAL_byelement = NEONByIndexedElementFixed | 0x20002000, 16250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMLSL_byelement = NEONByIndexedElementFixed | 0x20006000, 16260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULL_byelement = NEONByIndexedElementFixed | 0x0000B000, 16270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLAL_byelement = NEONByIndexedElementFixed | 0x00003000, 16280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLSL_byelement = NEONByIndexedElementFixed | 0x00007000, 16290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULH_byelement = NEONByIndexedElementFixed | 0x0000C000, 16300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRDMULH_byelement = NEONByIndexedElementFixed | 0x0000D000, 16310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Floating point instructions. 16330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONByIndexedElementFPFixed = NEONByIndexedElementFixed | 0x00800000, 16340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONByIndexedElementFPMask = NEONByIndexedElementMask | 0x00800000, 16350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLA_byelement = NEONByIndexedElementFPFixed | 0x00001000, 16360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLS_byelement = NEONByIndexedElementFPFixed | 0x00005000, 16370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMUL_byelement = NEONByIndexedElementFPFixed | 0x00009000, 16380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMULX_byelement = NEONByIndexedElementFPFixed | 0x20009000 16390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 16400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON register copy. 16420cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONCopyOp { 16430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyFixed = 0x0E000400, 16440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyFMask = 0x9FE08400, 16450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyMask = 0x3FE08400, 16460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyInsElementMask = NEONCopyMask | 0x40000000, 16470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyInsGeneralMask = NEONCopyMask | 0x40007800, 16480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyDupElementMask = NEONCopyMask | 0x20007800, 16490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyDupGeneralMask = NEONCopyDupElementMask, 16500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopyUmovMask = NEONCopyMask | 0x20007800, 16510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONCopySmovMask = NEONCopyMask | 0x20007800, 16520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_INS_ELEMENT = NEONCopyFixed | 0x60000000, 16530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_INS_GENERAL = NEONCopyFixed | 0x40001800, 16540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_DUP_ELEMENT = NEONCopyFixed | 0x00000000, 16550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_DUP_GENERAL = NEONCopyFixed | 0x00000800, 16560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SMOV = NEONCopyFixed | 0x00002800, 16570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UMOV = NEONCopyFixed | 0x00003800 16580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 16590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON extract. 16610cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONExtractOp { 16620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONExtractFixed = 0x2E000000, 16630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONExtractFMask = 0xBF208400, 16640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONExtractMask = 0xBFE08400, 16650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_EXT = NEONExtractFixed | 0x00000000 16660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 16670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16680cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreMultiOp { 16690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiL = 0x00400000, 16700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti1_1v = 0x00007000, 16710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti1_2v = 0x0000A000, 16720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti1_3v = 0x00006000, 16730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti1_4v = 0x00002000, 16740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti2 = 0x00008000, 16750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti3 = 0x00004000, 16760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMulti4 = 0x00000000 16770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 16780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 16790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON load/store multiple structures. 16800cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreMultiStructOp { 16810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructFixed = 0x0C000000, 16820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructFMask = 0xBFBF0000, 16830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructMask = 0xBFFFF000, 16840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructStore = NEONLoadStoreMultiStructFixed, 16850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructLoad = NEONLoadStoreMultiStructFixed | 16860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiL, 16870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_1v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_1v, 16880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_2v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_2v, 16890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_3v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_3v, 16900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_4v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_4v, 16910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti2, 16920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti3, 16930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti4, 16940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_1v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_1v, 16950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_2v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_2v, 16960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_3v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_3v, 16970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_4v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_4v, 16980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti2, 16990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti3, 17000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti4 17010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 17020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON load/store multiple structures with post-index addressing. 17040cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreMultiStructPostIndexOp { 17050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructPostIndexFixed = 0x0C800000, 17060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructPostIndexFMask = 0xBFA00000, 17070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructPostIndexMask = 0xBFE0F000, 17080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreMultiStructPostIndex = 0x00800000, 17090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_1v_post = NEON_LD1_1v | NEONLoadStoreMultiStructPostIndex, 17100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_2v_post = NEON_LD1_2v | NEONLoadStoreMultiStructPostIndex, 17110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_3v_post = NEON_LD1_3v | NEONLoadStoreMultiStructPostIndex, 17120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_4v_post = NEON_LD1_4v | NEONLoadStoreMultiStructPostIndex, 17130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_post = NEON_LD2 | NEONLoadStoreMultiStructPostIndex, 17140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_post = NEON_LD3 | NEONLoadStoreMultiStructPostIndex, 17150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_post = NEON_LD4 | NEONLoadStoreMultiStructPostIndex, 17160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_1v_post = NEON_ST1_1v | NEONLoadStoreMultiStructPostIndex, 17170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_2v_post = NEON_ST1_2v | NEONLoadStoreMultiStructPostIndex, 17180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_3v_post = NEON_ST1_3v | NEONLoadStoreMultiStructPostIndex, 17190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_4v_post = NEON_ST1_4v | NEONLoadStoreMultiStructPostIndex, 17200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_post = NEON_ST2 | NEONLoadStoreMultiStructPostIndex, 17210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_post = NEON_ST3 | NEONLoadStoreMultiStructPostIndex, 17220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_post = NEON_ST4 | NEONLoadStoreMultiStructPostIndex 17230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 17240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17250cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreSingleOp { 17260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle1 = 0x00000000, 17270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle2 = 0x00200000, 17280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle3 = 0x00002000, 17290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle4 = 0x00202000, 17300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleL = 0x00400000, 17310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle_b = 0x00000000, 17320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle_h = 0x00004000, 17330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle_s = 0x00008000, 17340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingle_d = 0x00008400, 17350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleAllLanes = 0x0000C000, 17360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleLenMask = 0x00202000 17370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 17380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON load/store single structure. 17400cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreSingleStructOp { 17410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFixed = 0x0D000000, 17420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFMask = 0xBF9F0000, 17430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructMask = 0xBFFFE000, 17440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructStore = NEONLoadStoreSingleStructFixed, 17450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad = NEONLoadStoreSingleStructFixed | 17460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleL, 17470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad1 = NEONLoadStoreSingle1 | 17480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad, 17490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad2 = NEONLoadStoreSingle2 | 17500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad, 17510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad3 = NEONLoadStoreSingle3 | 17520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad, 17530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad4 = NEONLoadStoreSingle4 | 17540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructLoad, 17550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructStore1 = NEONLoadStoreSingle1 | 17560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFixed, 17570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructStore2 = NEONLoadStoreSingle2 | 17580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFixed, 17590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructStore3 = NEONLoadStoreSingle3 | 17600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFixed, 17610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructStore4 = NEONLoadStoreSingle4 | 17620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructFixed, 17630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_b = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_b, 17640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_h = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_h, 17650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_s = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_s, 17660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_d = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_d, 17670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1R = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingleAllLanes, 17680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_b = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_b, 17690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_h = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_h, 17700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_s = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_s, 17710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_d = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_d, 17720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_b = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_b, 17740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_h = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_h, 17750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_s = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_s, 17760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_d = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_d, 17770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2R = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingleAllLanes, 17780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_b = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_b, 17790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_h = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_h, 17800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_s = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_s, 17810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_d = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_d, 17820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_b = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_b, 17840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_h = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_h, 17850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_s = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_s, 17860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_d = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_d, 17870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3R = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingleAllLanes, 17880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_b = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_b, 17890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_h = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_h, 17900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_s = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_s, 17910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_d = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_d, 17920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 17930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_b = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_b, 17940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_h = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_h, 17950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_s = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_s, 17960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_d = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_d, 17970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4R = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingleAllLanes, 17980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_b = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_b, 17990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_h = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_h, 18000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_s = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_s, 18010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_d = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_d 18020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 18030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON load/store single structure with post-index addressing. 18050cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONLoadStoreSingleStructPostIndexOp { 18060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructPostIndexFixed = 0x0D800000, 18070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructPostIndexFMask = 0xBF800000, 18080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructPostIndexMask = 0xBFE0E000, 18090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONLoadStoreSingleStructPostIndex = 0x00800000, 18100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_b_post = NEON_LD1_b | NEONLoadStoreSingleStructPostIndex, 18110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_h_post = NEON_LD1_h | NEONLoadStoreSingleStructPostIndex, 18120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_s_post = NEON_LD1_s | NEONLoadStoreSingleStructPostIndex, 18130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1_d_post = NEON_LD1_d | NEONLoadStoreSingleStructPostIndex, 18140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD1R_post = NEON_LD1R | NEONLoadStoreSingleStructPostIndex, 18150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_b_post = NEON_ST1_b | NEONLoadStoreSingleStructPostIndex, 18160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_h_post = NEON_ST1_h | NEONLoadStoreSingleStructPostIndex, 18170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_s_post = NEON_ST1_s | NEONLoadStoreSingleStructPostIndex, 18180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST1_d_post = NEON_ST1_d | NEONLoadStoreSingleStructPostIndex, 18190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_b_post = NEON_LD2_b | NEONLoadStoreSingleStructPostIndex, 18210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_h_post = NEON_LD2_h | NEONLoadStoreSingleStructPostIndex, 18220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_s_post = NEON_LD2_s | NEONLoadStoreSingleStructPostIndex, 18230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2_d_post = NEON_LD2_d | NEONLoadStoreSingleStructPostIndex, 18240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD2R_post = NEON_LD2R | NEONLoadStoreSingleStructPostIndex, 18250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_b_post = NEON_ST2_b | NEONLoadStoreSingleStructPostIndex, 18260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_h_post = NEON_ST2_h | NEONLoadStoreSingleStructPostIndex, 18270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_s_post = NEON_ST2_s | NEONLoadStoreSingleStructPostIndex, 18280cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST2_d_post = NEON_ST2_d | NEONLoadStoreSingleStructPostIndex, 18290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_b_post = NEON_LD3_b | NEONLoadStoreSingleStructPostIndex, 18310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_h_post = NEON_LD3_h | NEONLoadStoreSingleStructPostIndex, 18320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_s_post = NEON_LD3_s | NEONLoadStoreSingleStructPostIndex, 18330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3_d_post = NEON_LD3_d | NEONLoadStoreSingleStructPostIndex, 18340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD3R_post = NEON_LD3R | NEONLoadStoreSingleStructPostIndex, 18350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_b_post = NEON_ST3_b | NEONLoadStoreSingleStructPostIndex, 18360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_h_post = NEON_ST3_h | NEONLoadStoreSingleStructPostIndex, 18370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_s_post = NEON_ST3_s | NEONLoadStoreSingleStructPostIndex, 18380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST3_d_post = NEON_ST3_d | NEONLoadStoreSingleStructPostIndex, 18390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_b_post = NEON_LD4_b | NEONLoadStoreSingleStructPostIndex, 18410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_h_post = NEON_LD4_h | NEONLoadStoreSingleStructPostIndex, 18420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_s_post = NEON_LD4_s | NEONLoadStoreSingleStructPostIndex, 18430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4_d_post = NEON_LD4_d | NEONLoadStoreSingleStructPostIndex, 18440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_LD4R_post = NEON_LD4R | NEONLoadStoreSingleStructPostIndex, 18450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_b_post = NEON_ST4_b | NEONLoadStoreSingleStructPostIndex, 18460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_h_post = NEON_ST4_h | NEONLoadStoreSingleStructPostIndex, 18470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_s_post = NEON_ST4_s | NEONLoadStoreSingleStructPostIndex, 18480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ST4_d_post = NEON_ST4_d | NEONLoadStoreSingleStructPostIndex 18490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 18500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON modified immediate. 18520cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONModifiedImmediateOp { 18530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediateFixed = 0x0F000400, 18540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediateFMask = 0x9FF80400, 18550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediateOpBit = 0x20000000, 18560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediate_MOVI = NEONModifiedImmediateFixed | 0x00000000, 18570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediate_MVNI = NEONModifiedImmediateFixed | 0x20000000, 18580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediate_ORR = NEONModifiedImmediateFixed | 0x00001000, 18590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONModifiedImmediate_BIC = NEONModifiedImmediateFixed | 0x20001000 18600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 18610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON shift immediate. 18630cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONShiftImmediateOp { 18640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONShiftImmediateFixed = 0x0F000400, 18650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONShiftImmediateFMask = 0x9F800400, 18660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONShiftImmediateMask = 0xBF80FC00, 18670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONShiftImmediateUBit = 0x20000000, 18680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHL = NEONShiftImmediateFixed | 0x00005000, 18690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSHLL = NEONShiftImmediateFixed | 0x0000A000, 18700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USHLL = NEONShiftImmediateFixed | 0x2000A000, 18710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SLI = NEONShiftImmediateFixed | 0x20005000, 18720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRI = NEONShiftImmediateFixed | 0x20004000, 18730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHRN = NEONShiftImmediateFixed | 0x00008000, 18740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_RSHRN = NEONShiftImmediateFixed | 0x00008800, 18750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHRN = NEONShiftImmediateFixed | 0x20009000, 18760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQRSHRN = NEONShiftImmediateFixed | 0x20009800, 18770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHRN = NEONShiftImmediateFixed | 0x00009000, 18780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHRN = NEONShiftImmediateFixed | 0x00009800, 18790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHRUN = NEONShiftImmediateFixed | 0x20008000, 18800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHRUN = NEONShiftImmediateFixed | 0x20008800, 18810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSHR = NEONShiftImmediateFixed | 0x00000000, 18820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSHR = NEONShiftImmediateFixed | 0x00002000, 18830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USHR = NEONShiftImmediateFixed | 0x20000000, 18840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSHR = NEONShiftImmediateFixed | 0x20002000, 18850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSRA = NEONShiftImmediateFixed | 0x00001000, 18860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSRA = NEONShiftImmediateFixed | 0x00003000, 18870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USRA = NEONShiftImmediateFixed | 0x20001000, 18880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSRA = NEONShiftImmediateFixed | 0x20003000, 18890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHLU = NEONShiftImmediateFixed | 0x20006000, 18900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SCVTF_imm = NEONShiftImmediateFixed | 0x0000E000, 18910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UCVTF_imm = NEONShiftImmediateFixed | 0x2000E000, 18920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZS_imm = NEONShiftImmediateFixed | 0x0000F800, 18930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZU_imm = NEONShiftImmediateFixed | 0x2000F800, 18940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHL_imm = NEONShiftImmediateFixed | 0x00007000, 18950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHL_imm = NEONShiftImmediateFixed | 0x20007000 18960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 18970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 18980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON table. 18990cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONTableOp { 19000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONTableFixed = 0x0E000000, 19010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONTableFMask = 0xBF208C00, 19020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONTableExt = 0x00001000, 19030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONTableMask = 0xBF20FC00, 19040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBL_1v = NEONTableFixed | 0x00000000, 19050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBL_2v = NEONTableFixed | 0x00002000, 19060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBL_3v = NEONTableFixed | 0x00004000, 19070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBL_4v = NEONTableFixed | 0x00006000, 19080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBX_1v = NEON_TBL_1v | NEONTableExt, 19090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBX_2v = NEON_TBL_2v | NEONTableExt, 19100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBX_3v = NEON_TBL_3v | NEONTableExt, 19110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TBX_4v = NEON_TBL_4v | NEONTableExt 19120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 19130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 19140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON perm. 19150cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONPermOp { 19160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONPermFixed = 0x0E000800, 19170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONPermFMask = 0xBF208C00, 19180cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONPermMask = 0x3F20FC00, 19190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UZP1 = NEONPermFixed | 0x00001000, 19200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TRN1 = NEONPermFixed | 0x00002000, 19210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ZIP1 = NEONPermFixed | 0x00003000, 19220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UZP2 = NEONPermFixed | 0x00005000, 19230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_TRN2 = NEONPermFixed | 0x00006000, 19240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ZIP2 = NEONPermFixed | 0x00007000 19250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 19260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 19270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar instructions with two register operands. 19280cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalar2RegMiscOp { 19290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar2RegMiscFixed = 0x5E200800, 19300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar2RegMiscFMask = 0xDF3E0C00, 19310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar2RegMiscMask = NEON_Q | NEONScalar | NEON2RegMiscMask, 19320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGT_zero_scalar = NEON_Q | NEONScalar | NEON_CMGT_zero, 19330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_CMEQ_zero, 19340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMLT_zero_scalar = NEON_Q | NEONScalar | NEON_CMLT_zero, 19350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGE_zero_scalar = NEON_Q | NEONScalar | NEON_CMGE_zero, 19360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMLE_zero_scalar = NEON_Q | NEONScalar | NEON_CMLE_zero, 19370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ABS_scalar = NEON_Q | NEONScalar | NEON_ABS, 19380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQABS_scalar = NEON_Q | NEONScalar | NEON_SQABS, 19390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_NEG_scalar = NEON_Q | NEONScalar | NEON_NEG, 19400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQNEG_scalar = NEON_Q | NEONScalar | NEON_SQNEG, 19410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQXTN_scalar = NEON_Q | NEONScalar | NEON_SQXTN, 19420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQXTN_scalar = NEON_Q | NEONScalar | NEON_UQXTN, 19430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQXTUN_scalar = NEON_Q | NEONScalar | NEON_SQXTUN, 19440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUQADD_scalar = NEON_Q | NEONScalar | NEON_SUQADD, 19450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USQADD_scalar = NEON_Q | NEONScalar | NEON_USQADD, 19460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 19470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar2RegMiscOpcode = NEON2RegMiscOpcode, 19480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_NEG_scalar_opcode = NEON_NEG_scalar & NEONScalar2RegMiscOpcode, 19490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 19500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar2RegMiscFPMask = NEONScalar2RegMiscMask | 0x00800000, 19510cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRSQRTE_scalar = NEON_Q | NEONScalar | NEON_FRSQRTE, 19520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRECPE_scalar = NEON_Q | NEONScalar | NEON_FRECPE, 19530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SCVTF_scalar = NEON_Q | NEONScalar | NEON_SCVTF, 19540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UCVTF_scalar = NEON_Q | NEONScalar | NEON_UCVTF, 19550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGT_zero, 19560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_FCMEQ_zero, 19570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMLT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLT_zero, 19580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGE_zero, 19590cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMLE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLE_zero, 19600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRECPX_scalar = NEONScalar2RegMiscFixed | 0x0081F000, 19610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTNS_scalar = NEON_Q | NEONScalar | NEON_FCVTNS, 19620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTNU_scalar = NEON_Q | NEONScalar | NEON_FCVTNU, 19630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTPS_scalar = NEON_Q | NEONScalar | NEON_FCVTPS, 19640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTPU_scalar = NEON_Q | NEONScalar | NEON_FCVTPU, 19650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTMS_scalar = NEON_Q | NEONScalar | NEON_FCVTMS, 19660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTMU_scalar = NEON_Q | NEONScalar | NEON_FCVTMU, 19670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZS_scalar = NEON_Q | NEONScalar | NEON_FCVTZS, 19680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZU_scalar = NEON_Q | NEONScalar | NEON_FCVTZU, 19690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTAS_scalar = NEON_Q | NEONScalar | NEON_FCVTAS, 19700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTAU_scalar = NEON_Q | NEONScalar | NEON_FCVTAU, 19710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTXN_scalar = NEON_Q | NEONScalar | NEON_FCVTXN 19720cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 19730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 19740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar instructions with three same-type operands. 19750cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalar3SameOp { 19760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameFixed = 0x5E200400, 19770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameFMask = 0xDF200400, 19780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameMask = 0xFF20FC00, 19790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADD_scalar = NEON_Q | NEONScalar | NEON_ADD, 19800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMEQ_scalar = NEON_Q | NEONScalar | NEON_CMEQ, 19810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGE_scalar = NEON_Q | NEONScalar | NEON_CMGE, 19820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMGT_scalar = NEON_Q | NEONScalar | NEON_CMGT, 19830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMHI_scalar = NEON_Q | NEONScalar | NEON_CMHI, 19840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMHS_scalar = NEON_Q | NEONScalar | NEON_CMHS, 19850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_CMTST_scalar = NEON_Q | NEONScalar | NEON_CMTST, 19860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SUB_scalar = NEON_Q | NEONScalar | NEON_SUB, 19870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQADD_scalar = NEON_Q | NEONScalar | NEON_UQADD, 19880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQADD_scalar = NEON_Q | NEONScalar | NEON_SQADD, 19890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSUB_scalar = NEON_Q | NEONScalar | NEON_UQSUB, 19900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSUB_scalar = NEON_Q | NEONScalar | NEON_SQSUB, 19910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USHL_scalar = NEON_Q | NEONScalar | NEON_USHL, 19920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSHL_scalar = NEON_Q | NEONScalar | NEON_SSHL, 19930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHL_scalar = NEON_Q | NEONScalar | NEON_UQSHL, 19940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHL_scalar = NEON_Q | NEONScalar | NEON_SQSHL, 19950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSHL_scalar = NEON_Q | NEONScalar | NEON_URSHL, 19960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSHL_scalar = NEON_Q | NEONScalar | NEON_SRSHL, 19970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQRSHL_scalar = NEON_Q | NEONScalar | NEON_UQRSHL, 19980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHL_scalar = NEON_Q | NEONScalar | NEON_SQRSHL, 19990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULH_scalar = NEON_Q | NEONScalar | NEON_SQDMULH, 20000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRDMULH_scalar = NEON_Q | NEONScalar | NEON_SQRDMULH, 20010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // NEON floating point scalar instructions with three same-type operands. 20030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameFPFixed = NEONScalar3SameFixed | 0x0000C000, 20040cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameFPFMask = NEONScalar3SameFMask | 0x0000C000, 20050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3SameFPMask = NEONScalar3SameMask | 0x00800000, 20060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FACGE_scalar = NEON_Q | NEONScalar | NEON_FACGE, 20070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FACGT_scalar = NEON_Q | NEONScalar | NEON_FACGT, 20080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMEQ_scalar = NEON_Q | NEONScalar | NEON_FCMEQ, 20090cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGE_scalar = NEON_Q | NEONScalar | NEON_FCMGE, 20100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCMGT_scalar = NEON_Q | NEONScalar | NEON_FCMGT, 20110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMULX_scalar = NEON_Q | NEONScalar | NEON_FMULX, 20120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRECPS_scalar = NEON_Q | NEONScalar | NEON_FRECPS, 20130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FRSQRTS_scalar = NEON_Q | NEONScalar | NEON_FRSQRTS, 20140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FABD_scalar = NEON_Q | NEONScalar | NEON_FABD 20150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 20160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20170cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar instructions with three different-type operands. 20180cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalar3DiffOp { 20190cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3DiffFixed = 0x5E200000, 20200cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3DiffFMask = 0xDF200C00, 20210cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalar3DiffMask = NEON_Q | NEONScalar | NEON3DifferentMask, 20220cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLAL_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL, 20230cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLSL_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL, 20240cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULL_scalar = NEON_Q | NEONScalar | NEON_SQDMULL 20250cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 20260cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20270cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar instructions with indexed element operand. 20280cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalarByIndexedElementOp { 20290cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarByIndexedElementFixed = 0x5F000000, 20300cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarByIndexedElementFMask = 0xDF000400, 20310cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarByIndexedElementMask = 0xFF00F400, 20320cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLAL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL_byelement, 20330cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMLSL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL_byelement, 20340cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULL_byelement, 20350cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQDMULH_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULH_byelement, 20360cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRDMULH_byelement_scalar 20370cc8b6ece4b3e757e11a906a81ece292437713abarmvixl = NEON_Q | NEONScalar | NEON_SQRDMULH_byelement, 20380cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20390cc8b6ece4b3e757e11a906a81ece292437713abarmvixl // Floating point instructions. 20400cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarByIndexedElementFPFixed 20410cc8b6ece4b3e757e11a906a81ece292437713abarmvixl = NEONScalarByIndexedElementFixed | 0x00800000, 20420cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarByIndexedElementFPMask 20430cc8b6ece4b3e757e11a906a81ece292437713abarmvixl = NEONScalarByIndexedElementMask | 0x00800000, 20440cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLA_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLA_byelement, 20450cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMLS_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLS_byelement, 20460cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMUL_byelement_scalar = NEON_Q | NEONScalar | NEON_FMUL_byelement, 20470cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMULX_byelement_scalar = NEON_Q | NEONScalar | NEON_FMULX_byelement 20480cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 20490cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20500cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar register copy. 20510cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalarCopyOp { 20520cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarCopyFixed = 0x5E000400, 20530cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarCopyFMask = 0xDFE08400, 20540cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarCopyMask = 0xFFE0FC00, 20550cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_DUP_ELEMENT_scalar = NEON_Q | NEONScalar | NEON_DUP_ELEMENT 20560cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 20570cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20580cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar pairwise instructions. 20590cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalarPairwiseOp { 20600cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarPairwiseFixed = 0x5E300800, 20610cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarPairwiseFMask = 0xDF3E0C00, 20620cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarPairwiseMask = 0xFFB1F800, 20630cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_ADDP_scalar = NEONScalarPairwiseFixed | 0x0081B000, 20640cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXNMP_scalar = NEONScalarPairwiseFixed | 0x2000C000, 20650cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINNMP_scalar = NEONScalarPairwiseFixed | 0x2080C000, 20660cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FADDP_scalar = NEONScalarPairwiseFixed | 0x2000D000, 20670cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMAXP_scalar = NEONScalarPairwiseFixed | 0x2000F000, 20680cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FMINP_scalar = NEONScalarPairwiseFixed | 0x2080F000 20690cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 20700cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 20710cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// NEON scalar shift immediate. 20720cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum NEONScalarShiftImmediateOp { 20730cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarShiftImmediateFixed = 0x5F000400, 20740cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarShiftImmediateFMask = 0xDF800400, 20750cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEONScalarShiftImmediateMask = 0xFF80FC00, 20760cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SHL_scalar = NEON_Q | NEONScalar | NEON_SHL, 20770cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SLI_scalar = NEON_Q | NEONScalar | NEON_SLI, 20780cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRI_scalar = NEON_Q | NEONScalar | NEON_SRI, 20790cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSHR_scalar = NEON_Q | NEONScalar | NEON_SSHR, 20800cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USHR_scalar = NEON_Q | NEONScalar | NEON_USHR, 20810cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSHR_scalar = NEON_Q | NEONScalar | NEON_SRSHR, 20820cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSHR_scalar = NEON_Q | NEONScalar | NEON_URSHR, 20830cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SSRA_scalar = NEON_Q | NEONScalar | NEON_SSRA, 20840cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_USRA_scalar = NEON_Q | NEONScalar | NEON_USRA, 20850cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SRSRA_scalar = NEON_Q | NEONScalar | NEON_SRSRA, 20860cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_URSRA_scalar = NEON_Q | NEONScalar | NEON_URSRA, 20870cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHRN_scalar = NEON_Q | NEONScalar | NEON_UQSHRN, 20880cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQRSHRN_scalar = NEON_Q | NEONScalar | NEON_UQRSHRN, 20890cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHRN_scalar = NEON_Q | NEONScalar | NEON_SQSHRN, 20900cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHRN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRN, 20910cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQSHRUN, 20920cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQRSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRUN, 20930cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHLU_scalar = NEON_Q | NEONScalar | NEON_SQSHLU, 20940cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_SQSHL_imm, 20950cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_UQSHL_imm, 20960cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_SCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_SCVTF_imm, 20970cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_UCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_UCVTF_imm, 20980cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZS_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZS_imm, 20990cc8b6ece4b3e757e11a906a81ece292437713abarmvixl NEON_FCVTZU_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZU_imm 21000cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 21010cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 21020cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// Unimplemented and unallocated instructions. These are defined to make fixed 21030cc8b6ece4b3e757e11a906a81ece292437713abarmvixl// bit assertion easier. 21040cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum UnimplementedOp { 21050cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnimplementedFixed = 0x00000000, 21060cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnimplementedFMask = 0x00000000 21070cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 21080cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 21090cc8b6ece4b3e757e11a906a81ece292437713abarmvixlenum UnallocatedOp { 21100cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnallocatedFixed = 0x00000000, 21110cc8b6ece4b3e757e11a906a81ece292437713abarmvixl UnallocatedFMask = 0x00000000 21120cc8b6ece4b3e757e11a906a81ece292437713abarmvixl}; 21130cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 21140cc8b6ece4b3e757e11a906a81ece292437713abarmvixl} // namespace vixl 21150cc8b6ece4b3e757e11a906a81ece292437713abarmvixl 21160cc8b6ece4b3e757e11a906a81ece292437713abarmvixl#endif // VIXL_A64_CONSTANTS_A64_H_ 2117