VirtualBox

Changeset 106616 in vbox


Ignore:
Timestamp:
Oct 23, 2024 10:41:19 AM (5 weeks ago)
Author:
vboxsync
Message:

Disassembler: Fix decoding instructions which take sp as a register instead of of xzr/wzr, bugref:10394

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/dis-armv8.h

    r106004 r106616  
    5959    kDisOpParamArmV8RegType_Simd_Scalar_64Bit,
    6060    kDisOpParamArmV8RegType_Simd_Scalar_128Bit,
    61     kDisOpParamArmV8RegType_Simd_Vector
     61    kDisOpParamArmV8RegType_Simd_Vector,
     62    kDisOpParamArmV8RegType_Sp
    6263} DISOPPARAMARMV8REGTYPE;
    6364
     
    6970    /** The register type (DISOPPARAMARMV8REGTYPE). */
    7071    uint8_t  enmRegType;
    71     /** The register ID. */
     72    /** The register ID (not applicable for kDisOpParamArmV8RegType_Sp). */
    7273    uint8_t  idReg;
    7374} DISOPPARAMARMV8REG;
  • trunk/src/VBox/Disassembler/DisasmCore-armv8.cpp

    r106005 r106616  
    7979static FNDISPARSEARMV8 disArmV8ParseImmAdr;
    8080static FNDISPARSEARMV8 disArmV8ParseImmZero;
    81 static FNDISPARSEARMV8 disArmV8ParseReg;
    82 static FNDISPARSEARMV8 disArmV8ParseRegOff;
     81static FNDISPARSEARMV8 disArmV8ParseGprZr;
     82static FNDISPARSEARMV8 disArmV8ParseGprSp;
     83static FNDISPARSEARMV8 disArmV8ParseGprOff;
    8384static FNDISPARSEARMV8 disArmV8ParseImmsImmrN;
    8485static FNDISPARSEARMV8 disArmV8ParseHw;
     
    126127    disArmV8ParseImmAdr,
    127128    disArmV8ParseImmZero,
    128     disArmV8ParseReg,
    129     disArmV8ParseRegOff,
     129    disArmV8ParseGprZr,
     130    disArmV8ParseGprSp,
     131    disArmV8ParseGprOff,
    130132    disArmV8ParseImmsImmrN,
    131133    disArmV8ParseHw,
     
    290292
    291293
    292 static int disArmV8ParseReg(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)
     294static int disArmV8ParseGprZr(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)
    293295{
    294296    RT_NOREF(pDis, pOp, pInsnClass);
     
    302304
    303305
    304 static int disArmV8ParseRegOff(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)
     306static int disArmV8ParseGprSp(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)
     307{
     308    RT_NOREF(pDis, pOp, pInsnClass);
     309    pParam->armv8.Op.Reg.idReg = disArmV8ExtractBitVecFromInsn(u32Insn, pInsnParm->idxBitStart, pInsnParm->cBits);
     310    if (pParam->armv8.Op.Reg.idReg == 31)
     311        pParam->armv8.Op.Reg.enmRegType = kDisOpParamArmV8RegType_Sp;
     312    else if (*pf64Bit || (pParam->armv8.enmType == kDisArmv8OpParmAddrInGpr))
     313        pParam->armv8.Op.Reg.enmRegType = kDisOpParamArmV8RegType_Gpr_64Bit;
     314    else
     315        pParam->armv8.Op.Reg.enmRegType = kDisOpParamArmV8RegType_Gpr_32Bit;
     316    return VINF_SUCCESS;
     317}
     318
     319
     320static int disArmV8ParseGprOff(PDISSTATE pDis, uint32_t u32Insn, PCDISARMV8OPCODE pOp, PCDISARMV8INSNCLASS pInsnClass, PDISOPPARAM pParam, PCDISARMV8INSNPARAM pInsnParm, bool *pf64Bit)
    305321{
    306322    RT_NOREF(pDis, pOp, pInsnClass, pf64Bit);
    307     pParam->armv8.GprIndex.idReg = disArmV8ExtractBitVecFromInsn(u32Insn, pInsnParm->idxBitStart, pInsnParm->cBits);
    308     pParam->armv8.Op.Reg.enmRegType = kDisOpParamArmV8RegType_Gpr_64Bit; /* Might get overwritten later on. */
    309     pParam->fUse                   |= DISUSE_INDEX;
     323    pParam->armv8.GprIndex.idReg      = disArmV8ExtractBitVecFromInsn(u32Insn, pInsnParm->idxBitStart, pInsnParm->cBits);
     324    pParam->armv8.GprIndex.enmRegType = kDisOpParamArmV8RegType_Gpr_64Bit; /* Might get overwritten later on. */
     325    pParam->fUse                     |= DISUSE_INDEX;
    310326    return VINF_SUCCESS;
    311327}
  • trunk/src/VBox/Disassembler/DisasmFormatArmV8.cpp

    r106004 r106616  
    401401            return psz;
    402402        }
     403        case kDisOpParamArmV8RegType_Sp:
     404        {
     405            *pcchReg = 2;
     406            return "sp";
     407        }
    403408        default:
    404409            AssertFailed();
  • trunk/src/VBox/Disassembler/DisasmInternal-armv8.h

    r106004 r106616  
    5656    kDisParmParseImmAdr,
    5757    kDisParmParseImmZero,
    58     kDisParmParseReg,
    59     kDisParmParseRegOff,
     58    kDisParmParseGprZr,
     59    kDisParmParseGprSp,
     60    kDisParmParseGprOff,
    6061    kDisParmParseImmsImmrN,
    6162    kDisParmParseHw,
  • trunk/src/VBox/Disassembler/DisasmTables-armv8-a64-simd-fp.cpp.h

    r106004 r106616  
    8787    DIS_ARMV8_INSN_DECODE(kDisParmParseFpType,         22,  2, DIS_ARMV8_INSN_PARAM_UNSET),
    8888    DIS_ARMV8_INSN_DECODE(kDisParmParseFpReg,           0,  5, 0 /*idxParam*/),
    89     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,             5,  5, 1 /*idxParam*/),
     89    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,           5,  5, 1 /*idxParam*/),
    9090    DIS_ARMV8_INSN_DECODE(kDisParmParseFpScale,        10,  6, 2 /*idxParam*/),
    9191DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(DataProcFpFixedPConvGpr2FpReg, 0x7f3f0000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF /*fClass*/,
     
    111111DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(DataProcFpFixedPConvFpReg2Gpr)
    112112    DIS_ARMV8_INSN_DECODE(kDisParmParseFpType,         22,  2, DIS_ARMV8_INSN_PARAM_UNSET),
    113     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,             0,  5, 0 /*idxParam*/),
     113    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,           0,  5, 0 /*idxParam*/),
    114114    DIS_ARMV8_INSN_DECODE(kDisParmParseFpReg,           5,  5, 1 /*idxParam*/),
    115115    DIS_ARMV8_INSN_DECODE(kDisParmParseFpScale,        10,  6, 2 /*idxParam*/),
  • trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp

    r106387 r106616  
    7676    DIS_ARMV8_OP(0x90000000, "adrp" ,           OP_ARMV8_A64_ADRP,      DISOPTYPE_HARMLESS)
    7777DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Adr)
    78     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,    0, 5, 0 /*idxParam*/),
     78    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,  0, 5, 0 /*idxParam*/),
    7979    DIS_ARMV8_INSN_DECODE(kDisParmParseImmAdr, 0, 0, 1 /*idxParam*/),
    8080DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Adr, 0x9f000000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
     
    9090    DIS_ARMV8_OP(0x71000000, "subs" ,           OP_ARMV8_A64_SUBS,      DISOPTYPE_HARMLESS),
    9191DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(AddSubImm)
    92     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,    0, 5, 0 /*idxParam*/),
    93     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,    5, 5, 1 /*idxParam*/),
    94     DIS_ARMV8_INSN_DECODE(kDisParmParseImm,  10, 12, 2 /*idxParam*/),
    95     DIS_ARMV8_INSN_DECODE(kDisParmParseSh12, 22,  1, 2 /*idxParam*/),
     92    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,  0, 5, 0 /*idxParam*/),
     93    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,  5, 5, 1 /*idxParam*/),
     94    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,   10, 12, 2 /*idxParam*/),
     95    DIS_ARMV8_INSN_DECODE(kDisParmParseSh12,  22,  1, 2 /*idxParam*/),
    9696DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(AddSubImm, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF,
    9797                                                kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29,
     
    106106    DIS_ARMV8_OP(0x6b000000, "subs" ,           OP_ARMV8_A64_SUBS,      DISOPTYPE_HARMLESS),
    107107DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(AddSubShiftReg)
    108     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    109     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
    110     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           16,  5, 2 /*idxParam*/),
     108    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     109    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
     110    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
    111111    DIS_ARMV8_INSN_DECODE(kDisParmParseShift,         22,  2, 2 /*idxParam*/),
    112112    DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount,   10,  6, 2 /*idxParam*/),
     
    123123    DIS_ARMV8_OP(0x72000000, "ands" ,           OP_ARMV8_A64_ANDS,      DISOPTYPE_HARMLESS),
    124124DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogicalImm)
    125     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    126     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
     125    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          0,  5, 0 /*idxParam*/),
     126    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
    127127    DIS_ARMV8_INSN_DECODE(kDisParmParseImmsImmrN,     10, 13, 2 /*idxParam*/),
    128128DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(LogicalImm, 0x7f800000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF,
     
    138138    DIS_ARMV8_OP(0x72800000, "movk" ,           OP_ARMV8_A64_MOVK,      DISOPTYPE_HARMLESS),
    139139DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(MoveWide)
    140     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     140    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    141141    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,            5, 16, 1 /*idxParam*/),
    142142    DIS_ARMV8_INSN_DECODE(kDisParmParseHw,            21,  2, 1 /*idxParam*/),
     
    153153    INVALID_OPCODE,
    154154DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Bitfield)
    155     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    156     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
     155    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     156    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
    157157    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,           16,  6, 2 /*idxParam*/),
    158158    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,           10,  6, 3 /*idxParam*/),
     
    223223    DIS_ARMV8_OP(0x54000010, "wfit" ,           OP_ARMV8_A64_WFIT,      DISOPTYPE_HARMLESS), /* FEAT_WFxT */
    224224DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysReg)
    225     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     225    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    226226DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(SysReg, 0xffffffe0 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    227227                                                kDisArmV8OpcDecodeNop, 0xfe0, 5,
     
    289289    DIS_ARMV8_OP(0xd5233160, "ttest",           OP_ARMV8_A64_TTEST,     DISOPTYPE_HARMLESS),                         /* FEAT_TME */
    290290DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysResult)
    291     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     291    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    292292DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(SysResult, 0xfffffffe /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    293293                                                kDisArmV8OpcDecodeNop, RT_BIT_32(8) | RT_BIT_32(9) | RT_BIT_32(10) | RT_BIT_32(11), 8,
     
    302302    DIS_ARMV8_INSN_DECODE(kDisParmParseCRnCRm,         8,  8, 1 /*idxParam*/),
    303303    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,            5,  3, 2 /*idxParam*/),
    304     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 3 /*idxParam*/),
     304    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 3 /*idxParam*/),
    305305DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_0(Sys, 0xfff80000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    306306                                                kDisArmV8OpcDecodeNop, 0, 0); /** @todo */
     
    311311    DIS_ARMV8_OP(0xd5280000, "sysl",            OP_ARMV8_A64_SYSL,      DISOPTYPE_HARMLESS),
    312312DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(SysL)
    313     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     313    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    314314    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,           16,  3, 1 /*idxParam*/),
    315315    DIS_ARMV8_INSN_DECODE(kDisParmParseCRnCRm,         8,  8, 2 /*idxParam*/),
     
    324324DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Msr)
    325325    DIS_ARMV8_INSN_DECODE(kDisParmParseSysReg,         5, 15, 0 /*idxParam*/),
    326     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 1 /*idxParam*/),
     326    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 1 /*idxParam*/),
    327327DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Msr, 0xfff00000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    328328                                                kDisArmV8OpcDecodeNop, 0, 0,
     
    334334    DIS_ARMV8_OP(0xd5300000, "mrs",             OP_ARMV8_A64_MRS,       DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
    335335DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(Mrs)
    336     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     336    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    337337    DIS_ARMV8_INSN_DECODE(kDisParmParseSysReg,         5, 15, 1 /*idxParam*/),
    338338DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(Mrs, 0xfff00000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
     
    350350    DIS_ARMV8_OP(0xd65f0c00, "retab",          OP_ARMV8_A64_RETAB,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    351351DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(BrBlrRet)
    352     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 0 /*idxParam*/),
     352    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 0 /*idxParam*/),
    353353DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_1(BrBlrRet, 0xfffffc1f /*fFixedInsn*/, DISARMV8INSNCLASS_F_FORCED_64BIT,
    354354                                                kDisArmV8OpcDecodeLookup, 0xfffffc1f, 0,
     
    393393    DIS_ARMV8_OP(0x35000000, "cbnz",            OP_ARMV8_A64_CBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    394394DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(CmpBrImm)
    395     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     395    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    396396    DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel,         5, 19, 1 /*idxParam*/),
    397397DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(CmpBrImm, 0x7f000000 /*fFixedInsn*/, DISARMV8INSNCLASS_F_SF,
     
    405405    DIS_ARMV8_OP(0x37000000, "tbnz",            OP_ARMV8_A64_TBNZ,      DISOPTYPE_HARMLESS | DISOPTYPE_CONTROLFLOW),
    406406DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(TestBrImm)
    407     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
     407    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
    408408    DIS_ARMV8_INSN_DECODE(kDisParmParseImmTbz,         0,  0, 1 /*idxParam*/), /* Hardcoded bit offsets in parser. */
    409409    DIS_ARMV8_INSN_DECODE(kDisParmParseImmRel,         5, 14, 2 /*idxParam*/),
     
    439439    DIS_ARMV8_OP(0x6a000000, "ands",            OP_ARMV8_A64_ANDS,      DISOPTYPE_HARMLESS)
    440440DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogShiftRegN0)
    441     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    442     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
    443     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           16,  5, 2 /*idxParam*/),
     441    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     442    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
     443    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
    444444    DIS_ARMV8_INSN_DECODE(kDisParmParseShift,         22,  2, 2 /*idxParam*/),
    445445    DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount,   10,  6, 2 /*idxParam*/),
     
    456456    DIS_ARMV8_OP(0x6a200000, "bics",            OP_ARMV8_A64_BICS,      DISOPTYPE_HARMLESS)
    457457DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LogShiftRegN1)
    458     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    459     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
    460     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           16,  5, 2 /*idxParam*/),
     458    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     459    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 1 /*idxParam*/),
     460    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
    461461    DIS_ARMV8_INSN_DECODE(kDisParmParseShift,         22,  2, 2 /*idxParam*/),
    462462    DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount,   10,  6, 2 /*idxParam*/),
     
    494494    DIS_ARMV8_OP(0x7a400000, "ccmp",            OP_ARMV8_A64_CCMP,      DISOPTYPE_HARMLESS)
    495495DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(CondCmpReg)
    496     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 0 /*idxParam*/),
    497     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           16,  5, 1 /*idxParam*/),
     496    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          5,  5, 0 /*idxParam*/),
     497    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 1 /*idxParam*/),
    498498    DIS_ARMV8_INSN_DECODE(kDisParmParseImm,            0,  4, 2 /*idxParam*/),
    499499    DIS_ARMV8_INSN_DECODE(kDisParmParseCond,          12,  4, 3 /*idxParam*/),
     
    576576DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegUImmGpr)
    577577    DIS_ARMV8_INSN_DECODE(kDisParmParseSize,          30,  2, DIS_ARMV8_INSN_PARAM_UNSET),
    578     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    579     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
     578    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     579    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 1 /*idxParam*/),
    580580    DIS_ARMV8_INSN_DECODE(kDisParmParseImmMemOff,     10, 12, 1 /*idxParam*/),
    581581DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(LdStRegUImmGpr, 0xffc00000 /*fFixedInsn*/, 0 /*fClass*/,
     
    625625DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegOffGpr)
    626626    DIS_ARMV8_INSN_DECODE(kDisParmParseSize,          30,  2, DIS_ARMV8_INSN_PARAM_UNSET),
    627     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    628     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 1 /*idxParam*/),
    629     DIS_ARMV8_INSN_DECODE(kDisParmParseRegOff,        16,  5, 1 /*idxParam*/),
     627    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     628    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 1 /*idxParam*/),
     629    DIS_ARMV8_INSN_DECODE(kDisParmParseGprOff,        16,  5, 1 /*idxParam*/),
    630630    DIS_ARMV8_INSN_DECODE(kDisParmParseOption,        13,  3, 1 /*idxParam*/),
    631631    DIS_ARMV8_INSN_DECODE(kDisParmParseS,             12,  1, 1 /*idxParam*/),
     
    696696DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegUnscaledImmGpr)
    697697    DIS_ARMV8_INSN_DECODE(kDisParmParseSize,               30,  2, DIS_ARMV8_INSN_PARAM_UNSET),
    698     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,                 0,  5, 0 /*idxParam*/),
    699     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,                 5,  5, 1 /*idxParam*/),
     698    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,               0,  5, 0 /*idxParam*/),
     699    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,               5,  5, 1 /*idxParam*/),
    700700    DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOffUnscaled, 12,  9, 1 /*idxParam*/),
    701701DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_2(LdStRegUnscaledImmGpr, 0xffe00c00 /*fFixedInsn*/, 0 /*fClass*/,
     
    788788    INVALID_OPCODE,
    789789DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegPairOff)
    790     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    791     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           10,  5, 1 /*idxParam*/),
    792     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 2 /*idxParam*/),
     790    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     791    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         10,  5, 1 /*idxParam*/),
     792    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 2 /*idxParam*/),
    793793    DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOff,    15,  7, 2 /*idxParam*/),
    794794DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END_PARAMS_3(LdStRegPairOff, 0xffc00000 /*fFixedInsn*/, 0 /*fClass*/,
     
    813813    INVALID_OPCODE,
    814814DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegPairPreIndex)
    815     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            0,  5, 0 /*idxParam*/),
    816     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,           10,  5, 1 /*idxParam*/),
    817     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            5,  5, 2 /*idxParam*/),
     815    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     816    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         10,  5, 1 /*idxParam*/),
     817    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 2 /*idxParam*/),
    818818    DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOff,    15,  7, 2 /*idxParam*/),
    819819    DIS_ARMV8_INSN_DECODE(kDisParmParseSetPreIndexed,  0,  0, 2 /*idxParam*/),
     
    839839    INVALID_OPCODE,
    840840DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(LdStRegPairPostIndex)
    841     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,             0,  5, 0 /*idxParam*/),
    842     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,            10,  5, 1 /*idxParam*/),
    843     DIS_ARMV8_INSN_DECODE(kDisParmParseReg,             5,  5, 2 /*idxParam*/),
     841    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,           0,  5, 0 /*idxParam*/),
     842    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          10,  5, 1 /*idxParam*/),
     843    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,           5,  5, 2 /*idxParam*/),
    844844    DIS_ARMV8_INSN_DECODE(kDisParmParseSImmMemOff,     15,  7, 2 /*idxParam*/),
    845845    DIS_ARMV8_INSN_DECODE(kDisParmParseSetPostIndexed,  0,  0, 2 /*idxParam*/),
  • trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S

    r106018 r106616  
    303303        bic  w0, w1, w28, ROR #31
    304304
     305        bic  wzr, wzr, wzr
     306        bic  wzr, wzr, wzr, LSL #1
     307        bic  wzr, wzr, wzr, LSL #31
     308        bic  wzr, wzr, wzr, LSR #1
     309        bic  wzr, wzr, wzr, LSR #31
     310        bic  wzr, wzr, wzr, ASR #1
     311        bic  wzr, wzr, wzr, ASR #31
     312        bic  wzr, wzr, wzr, ROR #1
     313        bic  wzr, wzr, wzr, ROR #31
     314
    305315        bic  x0, x0, x27
    306316        bic  x0, x1, x28, LSL #1
     
    313323        bic  x0, x1, x28, ROR #63
    314324
     325        bic  xzr, xzr, xzr
     326        bic  xzr, xzr, xzr, LSL #1
     327        bic  xzr, xzr, xzr, LSL #63
     328        bic  xzr, xzr, xzr, LSR #1
     329        bic  xzr, xzr, xzr, LSR #63
     330        bic  xzr, xzr, xzr, ASR #1
     331        bic  xzr, xzr, xzr, ASR #63
     332        bic  xzr, xzr, xzr, ROR #1
     333        bic  xzr, xzr, xzr, ROR #63
     334
    315335        orn  w0, w0, w27
    316336        orn  w0, w1, w28, LSL #1
     
    323343        orn  w0, w1, w28, ROR #31
    324344
     345        orn  wzr, wzr, wzr
     346        orn  wzr, wzr, wzr, LSL #1
     347        orn  wzr, wzr, wzr, LSL #31
     348        orn  wzr, wzr, wzr, LSR #1
     349        orn  wzr, wzr, wzr, LSR #31
     350        orn  wzr, wzr, wzr, ASR #1
     351        orn  wzr, wzr, wzr, ASR #31
     352        orn  wzr, wzr, wzr, ROR #1
     353        orn  wzr, wzr, wzr, ROR #31
     354
    325355        orn  x0, x0, x27
    326356        orn  x0, x1, x28, LSL #1
     
    333363        orn  x0, x1, x28, ROR #63
    334364
     365        orn  xzr, xzr, xzr
     366        orn  xzr, xzr, xzr, LSL #1
     367        orn  xzr, xzr, xzr, LSL #63
     368        orn  xzr, xzr, xzr, LSR #1
     369        orn  xzr, xzr, xzr, LSR #63
     370        orn  xzr, xzr, xzr, ASR #1
     371        orn  xzr, xzr, xzr, ASR #63
     372        orn  xzr, xzr, xzr, ROR #1
     373        orn  xzr, xzr, xzr, ROR #63
     374
    335375        eon  w0, w0, w27
    336376        eon  w0, w1, w28, LSL #1
     
    343383        eon  w0, w1, w28, ROR #31
    344384
     385        eon  wzr, wzr, wzr
     386        eon  wzr, wzr, wzr, LSL #1
     387        eon  wzr, wzr, wzr, LSL #31
     388        eon  wzr, wzr, wzr, LSR #1
     389        eon  wzr, wzr, wzr, LSR #31
     390        eon  wzr, wzr, wzr, ASR #1
     391        eon  wzr, wzr, wzr, ASR #31
     392        eon  wzr, wzr, wzr, ROR #1
     393        eon  wzr, wzr, wzr, ROR #31
     394
    345395        eon  x0, x0, x27
    346396        eon  x0, x1, x28, LSL #1
     
    353403        eon  x0, x1, x28, ROR #63
    354404
     405        eon  xzr, xzr, xzr
     406        eon  xzr, xzr, xzr, LSL #1
     407        eon  xzr, xzr, xzr, LSL #63
     408        eon  xzr, xzr, xzr, LSR #1
     409        eon  xzr, xzr, xzr, LSR #63
     410        eon  xzr, xzr, xzr, ASR #1
     411        eon  xzr, xzr, xzr, ASR #63
     412        eon  xzr, xzr, xzr, ROR #1
     413        eon  xzr, xzr, xzr, ROR #63
     414
    355415        bics w0, w0, w27
    356416        bics w0, w1, w28, LSL #1
     
    363423        bics w0, w1, w28, ROR #31
    364424
     425        bics wzr, wzr, wzr
     426        bics wzr, wzr, wzr, LSL #1
     427        bics wzr, wzr, wzr, LSL #31
     428        bics wzr, wzr, wzr, LSR #1
     429        bics wzr, wzr, wzr, LSR #31
     430        bics wzr, wzr, wzr, ASR #1
     431        bics wzr, wzr, wzr, ASR #31
     432        bics wzr, wzr, wzr, ROR #1
     433        bics wzr, wzr, wzr, ROR #31
     434
    365435        bics x0, x0, x27
    366436        bics x0, x1, x28, LSL #1
     
    373443        bics x0, x1, x28, ROR #63
    374444
     445        bics xzr, xzr, xzr
     446        bics xzr, xzr, xzr, LSL #1
     447        bics xzr, xzr, xzr, LSL #63
     448        bics xzr, xzr, xzr, LSR #1
     449        bics xzr, xzr, xzr, LSR #63
     450        bics xzr, xzr, xzr, ASR #1
     451        bics xzr, xzr, xzr, ASR #63
     452        bics xzr, xzr, xzr, ROR #1
     453        bics xzr, xzr, xzr, ROR #63
     454
    375455        ; Memory loads
    376456        ldrb w0, [x28]
     
    378458        ldrb w0, [x28, #4095]
    379459
     460        ldrb w0, [sp]
     461        ldrb w0, [sp, #1]
     462        ldrb w0, [sp, #4095]
     463
    380464        ldrsb w0, [x28]
    381465        ldrsb w0, [x28, #1]
    382466        ldrsb w0, [x28, #4095]
    383467
     468        ldrsb w0, [sp]
     469        ldrsb w0, [sp, #1]
     470        ldrsb w0, [sp, #4095]
     471
    384472        ldrsb x0, [x28]
    385473        ldrsb x0, [x28, #1]
    386474        ldrsb x0, [x28, #4095]
    387475
     476        ldrsb x0, [sp]
     477        ldrsb x0, [sp, #1]
     478        ldrsb x0, [sp, #4095]
     479
    388480        ldrh w0, [x28]
    389481        ldrh w0, [x28, #2]
    390482        ldrh w0, [x28, #1024]
    391483
     484        ldrh w0, [sp]
     485        ldrh w0, [sp, #2]
     486        ldrh w0, [sp, #1024]
     487
    392488        ldrsh w0, [x28]
    393489        ldrsh w0, [x28, #2]
    394490        ldrsh w0, [x28, #1024]
    395491
     492        ldrsh w0, [sp]
     493        ldrsh w0, [sp, #2]
     494        ldrsh w0, [sp, #1024]
     495
    396496        ldrsh x0, [x28]
    397497        ldrsh x0, [x28, #2]
    398498        ldrsh x0, [x28, #1024]
    399499
     500        ldrsh x0, [sp]
     501        ldrsh x0, [sp, #2]
     502        ldrsh x0, [sp, #1024]
     503
    400504        ldr x0, [x28]
    401505        ldr x0, [x28, #8]
    402506        ldr x0, [x28, #32760]
    403507
     508        ldr x0, [sp]
     509        ldr x0, [sp, #8]
     510        ldr x0, [sp, #32760]
     511
    404512        ldr w0, [x28]
    405513        ldr w0, [x28, #4]
    406514        ldr w0, [x28, #16380]
    407515
     516        ldr w0, [sp]
     517        ldr w0, [sp, #4]
     518        ldr w0, [sp, #16380]
     519
    408520        ldrsw x0, [x28]
    409521        ldrsw x0, [x28, #4]
    410522        ldrsw x0, [x28, #16380]
    411523
     524        ldrsw x0, [sp]
     525        ldrsw x0, [sp, #4]
     526        ldrsw x0, [sp, #16380]
     527
    412528        ldurb w0, [x28]
    413529        ldurb w0, [x28, #-256]
    414530        ldurb w0, [x28, #255]
    415531
     532        ldurb w0, [sp]
     533        ldurb w0, [sp, #-256]
     534        ldurb w0, [sp, #255]
     535
    416536        ldursb w0, [x28]
    417537        ldursb w0, [x28, #-256]
    418538        ldursb w0, [x28, #255]
    419539
     540        ldursb w0, [sp]
     541        ldursb w0, [sp, #-256]
     542        ldursb w0, [sp, #255]
     543
    420544        ldursb x0, [x28]
    421545        ldursb x0, [x28, #-256]
    422546        ldursb x0, [x28, #255]
    423547
     548        ldursb x0, [sp]
     549        ldursb x0, [sp, #-256]
     550        ldursb x0, [sp, #255]
     551
    424552        ldurh w0, [x28]
    425553        ldurh w0, [x28, #-256]
    426554        ldurh w0, [x28, #255]
    427555
     556        ldurh w0, [sp]
     557        ldurh w0, [sp, #-256]
     558        ldurh w0, [sp, #255]
     559
    428560        ldursh w0, [x28]
    429561        ldursh w0, [x28, #-256]
    430562        ldursh w0, [x28, #255]
    431563
     564        ldursh w0, [sp]
     565        ldursh w0, [sp, #-256]
     566        ldursh w0, [sp, #255]
     567
    432568        ldursh x0, [x28]
    433569        ldursh x0, [x28, #-256]
    434570        ldursh x0, [x28, #255]
    435571
     572        ldursh x0, [sp]
     573        ldursh x0, [sp, #-256]
     574        ldursh x0, [sp, #255]
     575
    436576        ldur x0, [x28]
    437577        ldur x0, [x28, #-256]
    438578        ldur x0, [x28, #255]
    439579
     580        ldur x0, [sp]
     581        ldur x0, [sp, #-256]
     582        ldur x0, [sp, #255]
     583
    440584        ldur w0, [x28]
    441585        ldur w0, [x28, #-256]
    442586        ldur w0, [x28, #255]
    443587
     588        ldur w0, [sp]
     589        ldur w0, [sp, #-256]
     590        ldur w0, [sp, #255]
     591
    444592        ldursw x0, [x28]
    445593        ldursw x0, [x28, #-256]
    446594        ldursw x0, [x28, #255]
     595
     596        ldursw x0, [sp]
     597        ldursw x0, [sp, #-256]
     598        ldursw x0, [sp, #255]
    447599
    448600        ldp w0, w1, [x28]
     
    451603        ldp w0, w1, [x28, #252]
    452604
     605        ldp w0, w1, [sp]
     606        ldp w0, w1, [sp, #4]
     607        ldp w0, w1, [sp, #-256]
     608        ldp w0, w1, [sp, #252]
     609
    453610        ldp x0, x1, [x28]
    454611        ldp x0, x1, [x28, #8]
     
    456613        ldp x0, x1, [x28, #504]
    457614
     615        ldp x0, x1, [sp]
     616        ldp x0, x1, [sp, #8]
     617        ldp x0, x1, [sp, #-512]
     618        ldp x0, x1, [sp, #504]
     619
    458620        ldp w0, w1, [x28, #4]!
    459621        ldp w0, w1, [x28, #-256]!
    460622        ldp w0, w1, [x28, #252]!
    461623
     624        ldp w0, w1, [sp, #4]!
     625        ldp w0, w1, [sp, #-256]!
     626        ldp w0, w1, [sp, #252]!
     627
    462628        ldp x0, x1, [x28, #8]!
    463629        ldp x0, x1, [x28, #-512]!
    464630        ldp x0, x1, [x28, #504]!
    465631
     632        ldp x0, x1, [sp, #8]!
     633        ldp x0, x1, [sp, #-512]!
     634        ldp x0, x1, [sp, #504]!
     635
    466636        ldp w0, w1, [x28], #4
    467637        ldp w0, w1, [x28], #-256
    468638        ldp w0, w1, [x28], #252
    469639
     640        ldp w0, w1, [sp], #4
     641        ldp w0, w1, [sp], #-256
     642        ldp w0, w1, [sp], #252
     643
    470644        ldp x0, x1, [x28], #8
    471645        ldp x0, x1, [x28], #-512
    472646        ldp x0, x1, [x28], #504
     647
     648        ldp x0, x1, [sp], #8
     649        ldp x0, x1, [sp], #-512
     650        ldp x0, x1, [sp], #504
    473651
    474652        ldr  x0, [x1, x2]
     
    482660        ldr  w0, [x1, w2, SXTW #2]
    483661
     662        ldr  x0, [sp, x2]
     663        ldr  w0, [sp, x2]
     664        ldr  x0, [sp, x2, SXTX #0]
     665        ldr  x0, [sp, x2, LSL  #3]  ; UXTX
     666        ldr  x0, [sp, x2, SXTX #3]
     667        ldr  w0, [sp, w2, UXTW #0]
     668        ldr  w0, [sp, w2, SXTW #0]
     669        ldr  w0, [sp, w2, UXTW #2]
     670        ldr  w0, [sp, w2, SXTW #2]
     671
    484672        ldrb w0, [x1, x2]
    485673        ldrb w0, [x1, x2, LSL  #0]  ; UXTX
     
    488676        ldrb w0, [x1, w2, SXTW #0]
    489677
     678        ldrb w0, [sp, x2]
     679        ldrb w0, [sp, x2, LSL  #0]  ; UXTX
     680        ldrb w0, [sp, x2, SXTX #0]
     681        ldrb w0, [sp, w2, UXTW #0]
     682        ldrb w0, [sp, w2, SXTW #0]
     683
    490684        ldrsb w0, [x1, x2]
    491685        ldrsb w0, [x1, x2, LSL  #0] ; UXTX
     
    493687        ldrsb w0, [x1, w2, UXTW #0]
    494688        ldrsb w0, [x1, w2, SXTW #0]
     689
     690        ldrsb w0, [sp, x2]
     691        ldrsb w0, [sp, x2, LSL  #0] ; UXTX
     692        ldrsb w0, [sp, x2, SXTX #0]
     693        ldrsb w0, [sp, w2, UXTW #0]
     694        ldrsb w0, [sp, w2, SXTW #0]
    495695
    496696        ldrh w0, [x1, x2]
     
    504704        ldrh w0, [x1, w2, SXTW #1]
    505705
     706        ldrh w0, [sp, x2]
     707        ;ldrh w0, [sp, x2, LSL  #0]  ; UXTX
     708        ldrh w0, [sp, x2, SXTX #0]
     709        ldrh w0, [sp, x2, LSL  #1]   ; UXTX
     710        ldrh w0, [sp, x2, SXTX #1]
     711        ldrh w0, [sp, w2, UXTW #0]
     712        ldrh w0, [sp, w2, SXTW #0]
     713        ldrh w0, [sp, w2, UXTW #1]
     714        ldrh w0, [sp, w2, SXTW #1]
     715
    506716        ldrsh w0, [x1, x2]
    507717        ;ldrsh w0, [x1, x2, LSL  #0] ; UXTX
     
    514724        ldrsh w0, [x1, w2, SXTW #1]
    515725
     726        ldrsh w0, [sp, x2]
     727        ;ldrsh w0, [sp, x2, LSL  #0] ; UXTX
     728        ldrsh w0, [sp, x2, SXTX #0]
     729        ldrsh w0, [sp, x2, LSL  #1]   ; UXTX
     730        ldrsh w0, [sp, x2, SXTX #1]
     731        ldrsh w0, [sp, w2, UXTW #0]
     732        ldrsh w0, [sp, w2, SXTW #0]
     733        ldrsh w0, [sp, w2, UXTW #1]
     734        ldrsh w0, [sp, w2, SXTW #1]
     735
    516736        ldrsw x0, [x1, x2]
    517737        ;ldrsw x0, [x1, x2, LSL  #0] ; UXTX
     
    524744        ldrsw x0, [x1, w2, SXTW #2]
    525745
     746        ldrsw x0, [sp, x2]
     747        ;ldrsw x0, [sp, x2, LSL  #0] ; UXTX
     748        ldrsw x0, [sp, x2, SXTX #0]
     749        ldrsw x0, [sp, x2, LSL  #2]  ; UXTX
     750        ldrsw x0, [sp, x2, SXTX #2]
     751        ldrsw x0, [sp, w2, UXTW #0]
     752        ldrsw x0, [sp, w2, SXTW #0]
     753        ldrsw x0, [sp, w2, UXTW #2]
     754        ldrsw x0, [sp, w2, SXTW #2]
     755
    526756        ; Memory stores
    527757        strb w0, [x28]
     
    529759        strb w0, [x28, #4095]
    530760
     761        strb w0, [sp]
     762        strb w0, [sp, #1]
     763        strb w0, [sp, #4095]
     764
    531765        strh w0, [x28]
    532766        strh w0, [x28, #2]
    533767        strh w0, [x28, #1024]
    534768
     769        strh w0, [sp]
     770        strh w0, [sp, #2]
     771        strh w0, [sp, #1024]
     772
    535773        str x0, [x28]
    536774        str x0, [x28, #8]
    537775        str x0, [x28, #32760]
    538776
     777        str x0, [sp]
     778        str x0, [sp, #8]
     779        str x0, [sp, #32760]
     780
    539781        str w0, [x28]
    540782        str w0, [x28, #4]
    541783        str w0, [x28, #16380]
    542784
     785        str w0, [sp]
     786        str w0, [sp, #4]
     787        str w0, [sp, #16380]
    543788
    544789        sturb w0, [x28]
     
    546791        sturb w0, [x28, #255]
    547792
     793        sturb w0, [sp]
     794        sturb w0, [sp, #-256]
     795        sturb w0, [sp, #255]
     796
    548797        sturh w0, [x28]
    549798        sturh w0, [x28, #-256]
    550799        sturh w0, [x28, #255]
    551800
     801        sturh w0, [sp]
     802        sturh w0, [sp, #-256]
     803        sturh w0, [sp, #255]
     804
    552805        stur x0, [x28]
    553806        stur x0, [x28, #-256]
    554807        stur x0, [x28, #255]
    555808
     809        stur x0, [sp]
     810        stur x0, [sp, #-256]
     811        stur x0, [sp, #255]
     812
    556813        stur w0, [x28]
    557814        stur w0, [x28, #-256]
    558815        stur w0, [x28, #255]
     816
     817        stur w0, [sp]
     818        stur w0, [sp, #-256]
     819        stur w0, [sp, #255]
    559820
    560821        stp w0, w1, [x28]
     
    563824        stp w0, w1, [x28, #252]
    564825
     826        stp w0, w1, [sp]
     827        stp w0, w1, [sp, #4]
     828        stp w0, w1, [sp, #-256]
     829        stp w0, w1, [sp, #252]
     830
    565831        stp x0, x1, [x28]
    566832        stp x0, x1, [x28, #8]
     
    568834        stp x0, x1, [x28, #504]
    569835
     836        stp x0, x1, [sp]
     837        stp x0, x1, [sp, #8]
     838        stp x0, x1, [sp, #-512]
     839        stp x0, x1, [sp, #504]
     840
    570841        stp w0, w1, [x28, #4]!
    571842        stp w0, w1, [x28, #-256]!
    572843        stp w0, w1, [x28, #252]!
    573844
     845        stp w0, w1, [sp, #4]!
     846        stp w0, w1, [sp, #-256]!
     847        stp w0, w1, [sp, #252]!
     848
    574849        stp x0, x1, [x28, #8]!
    575850        stp x0, x1, [x28, #-512]!
    576851        stp x0, x1, [x28, #504]!
    577852
     853        stp x0, x1, [sp, #8]!
     854        stp x0, x1, [sp, #-512]!
     855        stp x0, x1, [sp, #504]!
     856
    578857        stp w0, w1, [x28], #4
    579858        stp w0, w1, [x28], #-256
    580859        stp w0, w1, [x28], #252
    581860
     861        stp w0, w1, [sp], #4
     862        stp w0, w1, [sp], #-256
     863        stp w0, w1, [sp], #252
     864
    582865        stp x0, x1, [x28], #8
    583866        stp x0, x1, [x28], #-512
    584867        stp x0, x1, [x28], #504
     868
     869        stp x0, x1, [sp], #8
     870        stp x0, x1, [sp], #-512
     871        stp x0, x1, [sp], #504
    585872
    586873        str  x0, [x1, x2]
     
    594881        str  w0, [x1, w2, SXTW #2]
    595882
     883        str  x0, [sp, x2]
     884        str  w0, [sp, x2]
     885        str  x0, [sp, x2, SXTX #0]
     886        str  x0, [sp, x2, LSL  #3]  ; UXTX
     887        str  x0, [sp, x2, SXTX #3]
     888        str  w0, [sp, w2, UXTW #0]
     889        str  w0, [sp, w2, SXTW #0]
     890        str  w0, [sp, w2, UXTW #2]
     891        str  w0, [sp, w2, SXTW #2]
     892
    596893        strb w0, [x1, x2]
    597894        strb w0, [x1, x2, LSL  #0x0]
     
    599896        strb w0, [x1, w2, UXTW #0x0]
    600897        strb w0, [x1, w2, SXTW #0x0]
     898
     899        strb w0, [sp, x2]
     900        strb w0, [sp, x2, LSL  #0x0]
     901        strb w0, [sp, x2, SXTX #0x0]
     902        strb w0, [sp, w2, UXTW #0x0]
     903        strb w0, [sp, w2, SXTW #0x0]
    601904
    602905        strh w0, [x1, x2]
     
    609912        strh w0, [x1, w2, UXTW #1]
    610913        strh w0, [x1, w2, SXTW #1]
     914
     915        strh w0, [sp, x2]
     916        ;strh w0, [sp, x2, LSL  #0x0] ; UXTX
     917        strh w0, [sp, x2, SXTX #0x0]
     918        strh w0, [sp, x2, LSL  #1]   ; UXTX
     919        strh w0, [sp, x2, SXTX #1]
     920        strh w0, [sp, w2, UXTW #0x0]
     921        strh w0, [sp, w2, SXTW #0x0]
     922        strh w0, [sp, w2, UXTW #1]
     923        strh w0, [sp, w2, SXTW #1]
    611924
    612925        ; Conditional compare
     
    9391252        ;sqrshrn q0, q1, #64
    9401253
     1254        dsb #0
     1255        dsb #1
     1256        dsb #2
     1257        dsb #3
     1258        dsb #4
     1259        dsb #5
     1260        dsb #6
     1261        dsb #7
     1262        dsb #8
     1263        dsb #9
     1264        dsb #0xa
     1265        dsb #0xb
     1266        dsb #0xc
     1267        dsb #0xd
     1268        dsb #0xe
     1269        dsb #0xf
     1270
    9411271        ;
    9421272        ; Keep last so the testcase can catch errors in
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette