VirtualBox

Changeset 106760 in vbox for trunk/src/VBox/Disassembler


Ignore:
Timestamp:
Oct 28, 2024 6:00:32 PM (3 months ago)
Author:
vboxsync
Message:

Disassembler: Decode Add/Subtract (extended register) instructions, bugref:10394

Location:
trunk/src/VBox/Disassembler
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/DisasmCore-armv8.cpp

    r106758 r106760  
    739739
    740740    Assert(   pParam->armv8.enmExtend == kDisArmv8OpParmExtendNone
    741            && (pParam->fUse & DISUSE_INDEX));
     741           /*&& (pParam->fUse & DISUSE_INDEX)*/); /* For add/sub extended register. */
    742742    switch (u32Opt)
    743743    {
     
    754754    }
    755755
    756     /* When option<0> is set to 0, the 32-bit name of the GPR is used, 64-bit when option<0> is set to 1. */
    757     pParam->armv8.GprIndex.enmRegType =   RT_BOOL(u32Opt & 0x1)
    758                                         ? kDisOpParamArmV8RegType_Gpr_64Bit
    759                                         : kDisOpParamArmV8RegType_Gpr_32Bit;
     756    /* When option<1:0> is b11, the 64-bit name of the GPR is used, 32-bit otherwise. */
     757    if (pParam->fUse & DISUSE_INDEX)
     758        pParam->armv8.GprIndex.enmRegType =   (u32Opt & 0x3) == 0x3
     759                                            ? kDisOpParamArmV8RegType_Gpr_64Bit
     760                                            : kDisOpParamArmV8RegType_Gpr_32Bit;
     761    else
     762    {
     763        Assert(pParam->armv8.enmType == kDisArmv8OpParmReg);
     764        pParam->armv8.Op.Reg.enmRegType =   ((u32Opt & 0x3) == 0x3 && *pf64Bit)
     765                                          ? kDisOpParamArmV8RegType_Gpr_64Bit
     766                                          : kDisOpParamArmV8RegType_Gpr_32Bit;
     767    }
    760768    return VINF_SUCCESS;
    761769}
  • trunk/src/VBox/Disassembler/DisasmFormatArmV8.cpp

    r106746 r106760  
    920920                        PUT_SZ("ROR #");
    921921                        break;
     922                    case kDisArmv8OpParmExtendUxtB:
     923                        PUT_SZ("UXTB #");
     924                        break;
     925                    case kDisArmv8OpParmExtendUxtH:
     926                        PUT_SZ("UXTH #");
     927                        break;
     928                    case kDisArmv8OpParmExtendUxtW:
     929                        PUT_SZ("UXTW #");
     930                        break;
     931                    case kDisArmv8OpParmExtendUxtX:
     932                        PUT_SZ("UXTX #");
     933                        break;
     934                    case kDisArmv8OpParmExtendSxtB:
     935                        PUT_SZ("SXTB #");
     936                        break;
     937                    case kDisArmv8OpParmExtendSxtH:
     938                        PUT_SZ("SXTH #");
     939                        break;
     940                    case kDisArmv8OpParmExtendSxtW:
     941                        PUT_SZ("SXTW #");
     942                        break;
     943                    case kDisArmv8OpParmExtendSxtX:
     944                        PUT_SZ("SXTX #");
     945                        break;
    922946                    default:
    923947                        AssertFailed();
  • trunk/src/VBox/Disassembler/DisasmTables-armv8-a64.cpp

    r106742 r106760  
    613613
    614614
    615 DIS_ARMV8_DECODE_MAP_DEFINE_BEGIN(AddSubExtReg)
    616     DIS_ARMV8_DECODE_MAP_INVALID_ENTRY, /** @todo */
    617 DIS_ARMV8_DECODE_MAP_DEFINE_END(AddSubExtReg, RT_BIT_32(24), 24);
     615/* ADD/ADDS/SUB/SUBS */
     616DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER(AddSubExtReg)
     617    DIS_ARMV8_INSN_DECODE(kDisParmParseSf,            31,  1, DIS_ARMV8_INSN_PARAM_UNSET),
     618    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          0,  5, 0 /*idxParam*/),
     619    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 1 /*idxParam*/),
     620    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
     621    DIS_ARMV8_INSN_DECODE(kDisParmParseOption,        13,  3, 2 /*idxParam*/),
     622    DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount,   10,  3, 2 /*idxParam*/),
     623DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_DECODER_ALTERNATIVE(AddSubExtRegS)
     624    DIS_ARMV8_INSN_DECODE(kDisParmParseSf,            31,  1, DIS_ARMV8_INSN_PARAM_UNSET),
     625    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,          0,  5, 0 /*idxParam*/),
     626    DIS_ARMV8_INSN_DECODE(kDisParmParseGprSp,          5,  5, 1 /*idxParam*/),
     627    DIS_ARMV8_INSN_DECODE(kDisParmParseGprZr,         16,  5, 2 /*idxParam*/),
     628    DIS_ARMV8_INSN_DECODE(kDisParmParseOption,        13,  3, 2 /*idxParam*/),
     629    DIS_ARMV8_INSN_DECODE(kDisParmParseShiftAmount,   10,  3, 2 /*idxParam*/),
     630DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_BEGIN(AddSubExtReg)
     631    DIS_ARMV8_OP(           0x0b200000, "add",             OP_ARMV8_A64_ADD,       DISOPTYPE_HARMLESS),
     632    DIS_ARMV8_OP_ALT_DECODE(0x2b200000, "adds",            OP_ARMV8_A64_ADDS,      DISOPTYPE_HARMLESS, AddSubExtRegS),
     633    DIS_ARMV8_OP(           0x4b200000, "sub",             OP_ARMV8_A64_SUB,       DISOPTYPE_HARMLESS),
     634    DIS_ARMV8_OP_ALT_DECODE(0x6b200000, "subs",            OP_ARMV8_A64_SUBS,      DISOPTYPE_HARMLESS, AddSubExtRegS),
     635DIS_ARMV8_DECODE_INSN_CLASS_DEFINE_END(AddSubExtReg, 0x7fe00000 /*fFixedInsn*/,
     636                                       kDisArmV8OpcDecodeNop, RT_BIT_32(29) | RT_BIT_32(30), 29);
    618637
    619638
  • trunk/src/VBox/Disassembler/testcase/tstDisasmArmv8-1-asm.S

    r106758 r106760  
    238238        cmp w0, w1, LSL #1
    239239
     240        ; Add/Sub extended register
     241        add w0, w1, w2
     242
     243        add x0, x1, x2
     244        add sp, sp, xzr
     245
     246        add w0,  w1,  w2,  UXTB #1
     247        add w0,  w1,  w2,  UXTB #2
     248        add w0,  w1,  w2,  UXTB #3
     249        add w0,  w1,  w2,  UXTB #4
     250        add w28, w29, wzr, UXTB #1
     251        add w28, w29, wzr, UXTB #2
     252        add w28, w29, wzr, UXTB #3
     253        add w28, w29, wzr, UXTB #4
     254
     255        add x0, x1,  w2, UXTB #1
     256        add x0, x1,  w2, UXTB #2
     257        add x0, x1,  w2, UXTB #3
     258        add x0, x1,  w2, UXTB #4
     259        add sp, sp, wzr, UXTB #1
     260        add sp, sp, wzr, UXTB #2
     261        add sp, sp, wzr, UXTB #3
     262        add sp, sp, wzr, UXTB #4
     263
     264        add w0,  w1,  w2,  UXTH #1
     265        add w0,  w1,  w2,  UXTH #2
     266        add w0,  w1,  w2,  UXTH #3
     267        add w0,  w1,  w2,  UXTH #4
     268        add w28, w29, wzr, UXTH #1
     269        add w28, w29, wzr, UXTH #2
     270        add w28, w29, wzr, UXTH #3
     271        add w28, w29, wzr, UXTH #4
     272
     273        add x0, x1,  w2, UXTH #1
     274        add x0, x1,  w2, UXTH #2
     275        add x0, x1,  w2, UXTH #3
     276        add x0, x1,  w2, UXTH #4
     277        add sp, sp, wzr, UXTH #1
     278        add sp, sp, wzr, UXTH #2
     279        add sp, sp, wzr, UXTH #3
     280        add sp, sp, wzr, UXTH #4
     281
     282        add w0,  w1,  w2,  UXTW #1
     283        add w0,  w1,  w2,  UXTW #2
     284        add w0,  w1,  w2,  UXTW #3
     285        add w0,  w1,  w2,  UXTW #4
     286        add w28, w29, wzr, UXTW #1
     287        add w28, w29, wzr, UXTW #2
     288        add w28, w29, wzr, UXTW #3
     289        add w28, w29, wzr, UXTW #4
     290
     291        add x0, x1,  w2, UXTW #1
     292        add x0, x1,  w2, UXTW #2
     293        add x0, x1,  w2, UXTW #3
     294        add x0, x1,  w2, UXTW #4
     295        add sp, sp, wzr, UXTW #1
     296        add sp, sp, wzr, UXTW #2
     297        add sp, sp, wzr, UXTW #3
     298        add sp, sp, wzr, UXTW #4
     299
     300        add w0,  w1,  w2,  UXTX #1
     301        add w0,  w1,  w2,  UXTX #2
     302        add w0,  w1,  w2,  UXTX #3
     303        add w0,  w1,  w2,  UXTX #4
     304        add w28, w29, wzr, UXTX #1
     305        add w28, w29, wzr, UXTX #2
     306        add w28, w29, wzr, UXTX #3
     307        add w28, w29, wzr, UXTX #4
     308
     309        add x0, x1,  x2, UXTX #1
     310        add x0, x1,  x2, UXTX #2
     311        add x0, x1,  x2, UXTX #3
     312        add x0, x1,  x2, UXTX #4
     313        add sp, sp, xzr, UXTX #1
     314        add sp, sp, xzr, UXTX #2
     315        add sp, sp, xzr, UXTX #3
     316        add sp, sp, xzr, UXTX #4
     317
     318        add w0,  w1,  w2,  SXTB #1
     319        add w0,  w1,  w2,  SXTB #2
     320        add w0,  w1,  w2,  SXTB #3
     321        add w0,  w1,  w2,  SXTB #4
     322        add w28, w29, wzr, SXTB #1
     323        add w28, w29, wzr, SXTB #2
     324        add w28, w29, wzr, SXTB #3
     325        add w28, w29, wzr, SXTB #4
     326
     327        add x0, x1,  w2, SXTB #1
     328        add x0, x1,  w2, SXTB #2
     329        add x0, x1,  w2, SXTB #3
     330        add x0, x1,  w2, SXTB #4
     331        add sp, sp, wzr, SXTB #1
     332        add sp, sp, wzr, SXTB #2
     333        add sp, sp, wzr, SXTB #3
     334        add sp, sp, wzr, SXTB #4
     335
     336        add w0,  w1,  w2,  SXTH #1
     337        add w0,  w1,  w2,  SXTH #2
     338        add w0,  w1,  w2,  SXTH #3
     339        add w0,  w1,  w2,  SXTH #4
     340        add w28, w29, wzr, SXTH #1
     341        add w28, w29, wzr, SXTH #2
     342        add w28, w29, wzr, SXTH #3
     343        add w28, w29, wzr, SXTH #4
     344
     345        add x0, x1,  w2, SXTH #1
     346        add x0, x1,  w2, SXTH #2
     347        add x0, x1,  w2, SXTH #3
     348        add x0, x1,  w2, SXTH #4
     349        add sp, sp, wzr, SXTH #1
     350        add sp, sp, wzr, SXTH #2
     351        add sp, sp, wzr, SXTH #3
     352        add sp, sp, wzr, SXTH #4
     353
     354        add w0,  w1,  w2,  SXTW #1
     355        add w0,  w1,  w2,  SXTW #2
     356        add w0,  w1,  w2,  SXTW #3
     357        add w0,  w1,  w2,  SXTW #4
     358        add w28, w29, wzr, SXTW #1
     359        add w28, w29, wzr, SXTW #2
     360        add w28, w29, wzr, SXTW #3
     361        add w28, w29, wzr, SXTW #4
     362
     363        add x0, x1,  w2, SXTW #1
     364        add x0, x1,  w2, SXTW #2
     365        add x0, x1,  w2, SXTW #3
     366        add x0, x1,  w2, SXTW #4
     367        add sp, sp, wzr, SXTW #1
     368        add sp, sp, wzr, SXTW #2
     369        add sp, sp, wzr, SXTW #3
     370        add sp, sp, wzr, SXTW #4
     371
     372        add w0,  w1,  w2,  SXTX #1
     373        add w0,  w1,  w2,  SXTX #2
     374        add w0,  w1,  w2,  SXTX #3
     375        add w0,  w1,  w2,  SXTX #4
     376        add w28, w29, wzr, SXTX #1
     377        add w28, w29, wzr, SXTX #2
     378        add w28, w29, wzr, SXTX #3
     379        add w28, w29, wzr, SXTX #4
     380
     381        add x0, x1,  x2, SXTX #1
     382        add x0, x1,  x2, SXTX #2
     383        add x0, x1,  x2, SXTX #3
     384        add x0, x1,  x2, SXTX #4
     385        add sp, sp, xzr, SXTX #1
     386        add sp, sp, xzr, SXTX #2
     387        add sp, sp, xzr, SXTX #3
     388        add sp, sp, xzr, SXTX #4
     389
     390
     391        adds w0, w1, w2
     392        adds x0, x1, x2
     393        adds xzr, sp, x2
     394
     395        adds w0,  w1,  w2,  UXTB #1
     396        adds w0,  w1,  w2,  UXTB #2
     397        adds w0,  w1,  w2,  UXTB #3
     398        adds w0,  w1,  w2,  UXTB #4
     399        adds w28, w29, wzr, UXTB #1
     400        adds w28, w29, wzr, UXTB #2
     401        adds w28, w29, wzr, UXTB #3
     402        adds w28, w29, wzr, UXTB #4
     403
     404        adds x0, x1,  w2, UXTB #1
     405        adds x0, x1,  w2, UXTB #2
     406        adds x0, x1,  w2, UXTB #3
     407        adds x0, x1,  w2, UXTB #4
     408        adds xzr, sp, wzr, UXTB #1
     409        adds xzr, sp, wzr, UXTB #2
     410        adds xzr, sp, wzr, UXTB #3
     411        adds xzr, sp, wzr, UXTB #4
     412
     413        adds w0,  w1,  w2,  UXTH #1
     414        adds w0,  w1,  w2,  UXTH #2
     415        adds w0,  w1,  w2,  UXTH #3
     416        adds w0,  w1,  w2,  UXTH #4
     417        adds w28, w29, wzr, UXTH #1
     418        adds w28, w29, wzr, UXTH #2
     419        adds w28, w29, wzr, UXTH #3
     420        adds w28, w29, wzr, UXTH #4
     421
     422        adds x0, x1,  w2, UXTH #1
     423        adds x0, x1,  w2, UXTH #2
     424        adds x0, x1,  w2, UXTH #3
     425        adds x0, x1,  w2, UXTH #4
     426        adds xzr, sp, wzr, UXTH #1
     427        adds xzr, sp, wzr, UXTH #2
     428        adds xzr, sp, wzr, UXTH #3
     429        adds xzr, sp, wzr, UXTH #4
     430
     431        adds w0,  w1,  w2,  UXTW #1
     432        adds w0,  w1,  w2,  UXTW #2
     433        adds w0,  w1,  w2,  UXTW #3
     434        adds w0,  w1,  w2,  UXTW #4
     435        adds w28, w29, wzr, UXTW #1
     436        adds w28, w29, wzr, UXTW #2
     437        adds w28, w29, wzr, UXTW #3
     438        adds w28, w29, wzr, UXTW #4
     439
     440        adds x0, x1,  w2, UXTW #1
     441        adds x0, x1,  w2, UXTW #2
     442        adds x0, x1,  w2, UXTW #3
     443        adds x0, x1,  w2, UXTW #4
     444        adds xzr, sp, wzr, UXTW #1
     445        adds xzr, sp, wzr, UXTW #2
     446        adds xzr, sp, wzr, UXTW #3
     447        adds xzr, sp, wzr, UXTW #4
     448
     449        adds w0,  w1,  w2,  UXTX #1
     450        adds w0,  w1,  w2,  UXTX #2
     451        adds w0,  w1,  w2,  UXTX #3
     452        adds w0,  w1,  w2,  UXTX #4
     453        adds w28, w29, wzr, UXTX #1
     454        adds w28, w29, wzr, UXTX #2
     455        adds w28, w29, wzr, UXTX #3
     456        adds w28, w29, wzr, UXTX #4
     457
     458        adds x0, x1,  x2, UXTX #1
     459        adds x0, x1,  x2, UXTX #2
     460        adds x0, x1,  x2, UXTX #3
     461        adds x0, x1,  x2, UXTX #4
     462        adds xzr, sp, xzr, UXTX #1
     463        adds xzr, sp, xzr, UXTX #2
     464        adds xzr, sp, xzr, UXTX #3
     465        adds xzr, sp, xzr, UXTX #4
     466
     467        adds w0,  w1,  w2,  SXTB #1
     468        adds w0,  w1,  w2,  SXTB #2
     469        adds w0,  w1,  w2,  SXTB #3
     470        adds w0,  w1,  w2,  SXTB #4
     471        adds w28, w29, wzr, SXTB #1
     472        adds w28, w29, wzr, SXTB #2
     473        adds w28, w29, wzr, SXTB #3
     474        adds w28, w29, wzr, SXTB #4
     475
     476        adds x0, x1,  w2, SXTB #1
     477        adds x0, x1,  w2, SXTB #2
     478        adds x0, x1,  w2, SXTB #3
     479        adds x0, x1,  w2, SXTB #4
     480        adds xzr, sp, wzr, SXTB #1
     481        adds xzr, sp, wzr, SXTB #2
     482        adds xzr, sp, wzr, SXTB #3
     483        adds xzr, sp, wzr, SXTB #4
     484
     485        adds w0,  w1,  w2,  SXTH #1
     486        adds w0,  w1,  w2,  SXTH #2
     487        adds w0,  w1,  w2,  SXTH #3
     488        adds w0,  w1,  w2,  SXTH #4
     489        adds w28, w29, wzr, SXTH #1
     490        adds w28, w29, wzr, SXTH #2
     491        adds w28, w29, wzr, SXTH #3
     492        adds w28, w29, wzr, SXTH #4
     493
     494        adds x0, x1,  w2, SXTH #1
     495        adds x0, x1,  w2, SXTH #2
     496        adds x0, x1,  w2, SXTH #3
     497        adds x0, x1,  w2, SXTH #4
     498        adds xzr, sp, wzr, SXTH #1
     499        adds xzr, sp, wzr, SXTH #2
     500        adds xzr, sp, wzr, SXTH #3
     501        adds xzr, sp, wzr, SXTH #4
     502
     503        adds w0,  w1,  w2,  SXTW #1
     504        adds w0,  w1,  w2,  SXTW #2
     505        adds w0,  w1,  w2,  SXTW #3
     506        adds w0,  w1,  w2,  SXTW #4
     507        adds w28, w29, wzr, SXTW #1
     508        adds w28, w29, wzr, SXTW #2
     509        adds w28, w29, wzr, SXTW #3
     510        adds w28, w29, wzr, SXTW #4
     511
     512        adds x0, x1,  w2, SXTW #1
     513        adds x0, x1,  w2, SXTW #2
     514        adds x0, x1,  w2, SXTW #3
     515        adds x0, x1,  w2, SXTW #4
     516        adds xzr, sp, wzr, SXTW #1
     517        adds xzr, sp, wzr, SXTW #2
     518        adds xzr, sp, wzr, SXTW #3
     519        adds xzr, sp, wzr, SXTW #4
     520
     521        adds w0,  w1,  w2,  SXTX #1
     522        adds w0,  w1,  w2,  SXTX #2
     523        adds w0,  w1,  w2,  SXTX #3
     524        adds w0,  w1,  w2,  SXTX #4
     525        adds w28, w29, wzr, SXTX #1
     526        adds w28, w29, wzr, SXTX #2
     527        adds w28, w29, wzr, SXTX #3
     528        adds w28, w29, wzr, SXTX #4
     529
     530        adds x0, x1,  x2, SXTX #1
     531        adds x0, x1,  x2, SXTX #2
     532        adds x0, x1,  x2, SXTX #3
     533        adds x0, x1,  x2, SXTX #4
     534        adds xzr, sp, xzr, SXTX #1
     535        adds xzr, sp, xzr, SXTX #2
     536        adds xzr, sp, xzr, SXTX #3
     537        adds xzr, sp, xzr, SXTX #4
     538
     539
     540        sub w0, w1, w2
     541
     542        sub w0,  w1,  w2,  UXTB #1
     543        sub w0,  w1,  w2,  UXTB #2
     544        sub w0,  w1,  w2,  UXTB #3
     545        sub w0,  w1,  w2,  UXTB #4
     546        sub w28, w29, wzr, UXTB #1
     547        sub w28, w29, wzr, UXTB #2
     548        sub w28, w29, wzr, UXTB #3
     549        sub w28, w29, wzr, UXTB #4
     550
     551        sub x0, x1,  w2, UXTB #1
     552        sub x0, x1,  w2, UXTB #2
     553        sub x0, x1,  w2, UXTB #3
     554        sub x0, x1,  w2, UXTB #4
     555        sub sp, sp, wzr, UXTB #1
     556        sub sp, sp, wzr, UXTB #2
     557        sub sp, sp, wzr, UXTB #3
     558        sub sp, sp, wzr, UXTB #4
     559
     560        sub w0,  w1,  w2,  UXTH #1
     561        sub w0,  w1,  w2,  UXTH #2
     562        sub w0,  w1,  w2,  UXTH #3
     563        sub w0,  w1,  w2,  UXTH #4
     564        sub w28, w29, wzr, UXTH #1
     565        sub w28, w29, wzr, UXTH #2
     566        sub w28, w29, wzr, UXTH #3
     567        sub w28, w29, wzr, UXTH #4
     568
     569        sub x0, x1,  w2, UXTH #1
     570        sub x0, x1,  w2, UXTH #2
     571        sub x0, x1,  w2, UXTH #3
     572        sub x0, x1,  w2, UXTH #4
     573        sub sp, sp, wzr, UXTH #1
     574        sub sp, sp, wzr, UXTH #2
     575        sub sp, sp, wzr, UXTH #3
     576        sub sp, sp, wzr, UXTH #4
     577
     578        sub w0,  w1,  w2,  UXTW #1
     579        sub w0,  w1,  w2,  UXTW #2
     580        sub w0,  w1,  w2,  UXTW #3
     581        sub w0,  w1,  w2,  UXTW #4
     582        sub w28, w29, wzr, UXTW #1
     583        sub w28, w29, wzr, UXTW #2
     584        sub w28, w29, wzr, UXTW #3
     585        sub w28, w29, wzr, UXTW #4
     586
     587        sub x0, x1,  w2, UXTW #1
     588        sub x0, x1,  w2, UXTW #2
     589        sub x0, x1,  w2, UXTW #3
     590        sub x0, x1,  w2, UXTW #4
     591        sub sp, sp, wzr, UXTW #1
     592        sub sp, sp, wzr, UXTW #2
     593        sub sp, sp, wzr, UXTW #3
     594        sub sp, sp, wzr, UXTW #4
     595
     596        sub w0,  w1,  w2,  UXTX #1
     597        sub w0,  w1,  w2,  UXTX #2
     598        sub w0,  w1,  w2,  UXTX #3
     599        sub w0,  w1,  w2,  UXTX #4
     600        sub w28, w29, wzr, UXTX #1
     601        sub w28, w29, wzr, UXTX #2
     602        sub w28, w29, wzr, UXTX #3
     603        sub w28, w29, wzr, UXTX #4
     604
     605        sub x0, x1,  x2, UXTX #1
     606        sub x0, x1,  x2, UXTX #2
     607        sub x0, x1,  x2, UXTX #3
     608        sub x0, x1,  x2, UXTX #4
     609        sub sp, sp, xzr, UXTX #1
     610        sub sp, sp, xzr, UXTX #2
     611        sub sp, sp, xzr, UXTX #3
     612        sub sp, sp, xzr, UXTX #4
     613
     614        sub w0,  w1,  w2,  SXTB #1
     615        sub w0,  w1,  w2,  SXTB #2
     616        sub w0,  w1,  w2,  SXTB #3
     617        sub w0,  w1,  w2,  SXTB #4
     618        sub w28, w29, wzr, SXTB #1
     619        sub w28, w29, wzr, SXTB #2
     620        sub w28, w29, wzr, SXTB #3
     621        sub w28, w29, wzr, SXTB #4
     622
     623        sub x0, x1,  w2, SXTB #1
     624        sub x0, x1,  w2, SXTB #2
     625        sub x0, x1,  w2, SXTB #3
     626        sub x0, x1,  w2, SXTB #4
     627        sub sp, sp, wzr, SXTB #1
     628        sub sp, sp, wzr, SXTB #2
     629        sub sp, sp, wzr, SXTB #3
     630        sub sp, sp, wzr, SXTB #4
     631
     632        sub w0,  w1,  w2,  SXTH #1
     633        sub w0,  w1,  w2,  SXTH #2
     634        sub w0,  w1,  w2,  SXTH #3
     635        sub w0,  w1,  w2,  SXTH #4
     636        sub w28, w29, wzr, SXTH #1
     637        sub w28, w29, wzr, SXTH #2
     638        sub w28, w29, wzr, SXTH #3
     639        sub w28, w29, wzr, SXTH #4
     640
     641        sub x0, x1,  w2, SXTH #1
     642        sub x0, x1,  w2, SXTH #2
     643        sub x0, x1,  w2, SXTH #3
     644        sub x0, x1,  w2, SXTH #4
     645        sub sp, sp, wzr, SXTH #1
     646        sub sp, sp, wzr, SXTH #2
     647        sub sp, sp, wzr, SXTH #3
     648        sub sp, sp, wzr, SXTH #4
     649
     650        sub w0,  w1,  w2,  SXTW #1
     651        sub w0,  w1,  w2,  SXTW #2
     652        sub w0,  w1,  w2,  SXTW #3
     653        sub w0,  w1,  w2,  SXTW #4
     654        sub w28, w29, wzr, SXTW #1
     655        sub w28, w29, wzr, SXTW #2
     656        sub w28, w29, wzr, SXTW #3
     657        sub w28, w29, wzr, SXTW #4
     658
     659        sub x0, x1,  w2, SXTW #1
     660        sub x0, x1,  w2, SXTW #2
     661        sub x0, x1,  w2, SXTW #3
     662        sub x0, x1,  w2, SXTW #4
     663        sub sp, sp, wzr, SXTW #1
     664        sub sp, sp, wzr, SXTW #2
     665        sub sp, sp, wzr, SXTW #3
     666        sub sp, sp, wzr, SXTW #4
     667
     668        sub w0,  w1,  w2,  SXTX #1
     669        sub w0,  w1,  w2,  SXTX #2
     670        sub w0,  w1,  w2,  SXTX #3
     671        sub w0,  w1,  w2,  SXTX #4
     672        sub w28, w29, wzr, SXTX #1
     673        sub w28, w29, wzr, SXTX #2
     674        sub w28, w29, wzr, SXTX #3
     675        sub w28, w29, wzr, SXTX #4
     676
     677        sub x0, x1,  x2, SXTX #1
     678        sub x0, x1,  x2, SXTX #2
     679        sub x0, x1,  x2, SXTX #3
     680        sub x0, x1,  x2, SXTX #4
     681        sub sp, sp, xzr, SXTX #1
     682        sub sp, sp, xzr, SXTX #2
     683        sub sp, sp, xzr, SXTX #3
     684        sub sp, sp, xzr, SXTX #4
     685
     686
     687        subs w0, w1, w2
     688        subs x0, sp, xzr
     689
     690        subs w0,  w1,  w2,  UXTB #1
     691        subs w0,  w1,  w2,  UXTB #2
     692        subs w0,  w1,  w2,  UXTB #3
     693        subs w0,  w1,  w2,  UXTB #4
     694        subs w28, w29, wzr, UXTB #1
     695        subs w28, w29, wzr, UXTB #2
     696        subs w28, w29, wzr, UXTB #3
     697        subs w28, w29, wzr, UXTB #4
     698
     699        subs x0, x1,  w2, UXTB #1
     700        subs x0, x1,  w2, UXTB #2
     701        subs x0, x1,  w2, UXTB #3
     702        subs x0, x1,  w2, UXTB #4
     703        subs x28, sp, wzr, UXTB #1 ; targetting xzr would produce an cmp alias instruction
     704        subs x28, sp, wzr, UXTB #2
     705        subs x28, sp, wzr, UXTB #3
     706        subs x28, sp, wzr, UXTB #4
     707
     708        subs w0,  w1,  w2,  UXTH #1
     709        subs w0,  w1,  w2,  UXTH #2
     710        subs w0,  w1,  w2,  UXTH #3
     711        subs w0,  w1,  w2,  UXTH #4
     712        subs w28, w29, wzr, UXTH #1
     713        subs w28, w29, wzr, UXTH #2
     714        subs w28, w29, wzr, UXTH #3
     715        subs w28, w29, wzr, UXTH #4
     716
     717        subs x0, x1,  w2, UXTH #1
     718        subs x0, x1,  w2, UXTH #2
     719        subs x0, x1,  w2, UXTH #3
     720        subs x0, x1,  w2, UXTH #4
     721        subs x28, sp, wzr, UXTH #1
     722        subs x28, sp, wzr, UXTH #2
     723        subs x28, sp, wzr, UXTH #3
     724        subs x28, sp, wzr, UXTH #4
     725
     726        subs w0,  w1,  w2,  UXTW #1
     727        subs w0,  w1,  w2,  UXTW #2
     728        subs w0,  w1,  w2,  UXTW #3
     729        subs w0,  w1,  w2,  UXTW #4
     730        subs w28, w29, wzr, UXTW #1
     731        subs w28, w29, wzr, UXTW #2
     732        subs w28, w29, wzr, UXTW #3
     733        subs w28, w29, wzr, UXTW #4
     734
     735        subs x0, x1,  w2, UXTW #1
     736        subs x0, x1,  w2, UXTW #2
     737        subs x0, x1,  w2, UXTW #3
     738        subs x0, x1,  w2, UXTW #4
     739        subs x28, sp, wzr, UXTW #1
     740        subs x28, sp, wzr, UXTW #2
     741        subs x28, sp, wzr, UXTW #3
     742        subs x28, sp, wzr, UXTW #4
     743
     744        subs w0,  w1,  w2,  UXTX #1
     745        subs w0,  w1,  w2,  UXTX #2
     746        subs w0,  w1,  w2,  UXTX #3
     747        subs w0,  w1,  w2,  UXTX #4
     748        subs w28, w29, wzr, UXTX #1
     749        subs w28, w29, wzr, UXTX #2
     750        subs w28, w29, wzr, UXTX #3
     751        subs w28, w29, wzr, UXTX #4
     752
     753        subs x0, x1,  x2, UXTX #1
     754        subs x0, x1,  x2, UXTX #2
     755        subs x0, x1,  x2, UXTX #3
     756        subs x0, x1,  x2, UXTX #4
     757        subs x28, sp, xzr, UXTX #1
     758        subs x28, sp, xzr, UXTX #2
     759        subs x28, sp, xzr, UXTX #3
     760        subs x28, sp, xzr, UXTX #4
     761
     762        subs w0,  w1,  w2,  SXTB #1
     763        subs w0,  w1,  w2,  SXTB #2
     764        subs w0,  w1,  w2,  SXTB #3
     765        subs w0,  w1,  w2,  SXTB #4
     766        subs w28, w29, wzr, SXTB #1
     767        subs w28, w29, wzr, SXTB #2
     768        subs w28, w29, wzr, SXTB #3
     769        subs w28, w29, wzr, SXTB #4
     770
     771        subs x0, x1,  w2, SXTB #1
     772        subs x0, x1,  w2, SXTB #2
     773        subs x0, x1,  w2, SXTB #3
     774        subs x0, x1,  w2, SXTB #4
     775        subs x28, sp, wzr, SXTB #1
     776        subs x28, sp, wzr, SXTB #2
     777        subs x28, sp, wzr, SXTB #3
     778        subs x28, sp, wzr, SXTB #4
     779
     780        subs w0,  w1,  w2,  SXTH #1
     781        subs w0,  w1,  w2,  SXTH #2
     782        subs w0,  w1,  w2,  SXTH #3
     783        subs w0,  w1,  w2,  SXTH #4
     784        subs w28, w29, wzr, SXTH #1
     785        subs w28, w29, wzr, SXTH #2
     786        subs w28, w29, wzr, SXTH #3
     787        subs w28, w29, wzr, SXTH #4
     788
     789        subs x0, x1,  w2, SXTH #1
     790        subs x0, x1,  w2, SXTH #2
     791        subs x0, x1,  w2, SXTH #3
     792        subs x0, x1,  w2, SXTH #4
     793        subs x28, sp, wzr, SXTH #1
     794        subs x28, sp, wzr, SXTH #2
     795        subs x28, sp, wzr, SXTH #3
     796        subs x28, sp, wzr, SXTH #4
     797
     798        subs w0,  w1,  w2,  SXTW #1
     799        subs w0,  w1,  w2,  SXTW #2
     800        subs w0,  w1,  w2,  SXTW #3
     801        subs w0,  w1,  w2,  SXTW #4
     802        subs w28, w29, wzr, SXTW #1
     803        subs w28, w29, wzr, SXTW #2
     804        subs w28, w29, wzr, SXTW #3
     805        subs w28, w29, wzr, SXTW #4
     806
     807        subs x0, x1,  w2, SXTW #1
     808        subs x0, x1,  w2, SXTW #2
     809        subs x0, x1,  w2, SXTW #3
     810        subs x0, x1,  w2, SXTW #4
     811        subs x28, sp, wzr, SXTW #1
     812        subs x28, sp, wzr, SXTW #2
     813        subs x28, sp, wzr, SXTW #3
     814        subs x28, sp, wzr, SXTW #4
     815
     816        subs w0,  w1,  w2,  SXTX #1
     817        subs w0,  w1,  w2,  SXTX #2
     818        subs w0,  w1,  w2,  SXTX #3
     819        subs w0,  w1,  w2,  SXTX #4
     820        subs w28, w29, wzr, SXTX #1
     821        subs w28, w29, wzr, SXTX #2
     822        subs w28, w29, wzr, SXTX #3
     823        subs w28, w29, wzr, SXTX #4
     824
     825        subs x0, x1,  x2, SXTX #1
     826        subs x0, x1,  x2, SXTX #2
     827        subs x0, x1,  x2, SXTX #3
     828        subs x0, x1,  x2, SXTX #4
     829        subs x28, sp, xzr, SXTX #1
     830        subs x28, sp, xzr, SXTX #2
     831        subs x28, sp, xzr, SXTX #3
     832        subs x28, sp, xzr, SXTX #4
     833
     834
    240835        ; Logical instructions
    241836        and  x0,  x0,  #0xffff
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