@ -2541,8 +2541,8 @@ static const aarch64_feature_set aarch64_feature_simd_f16 =
AARCH64_FEATURES ( 2 , F16 , SIMD ) ;
static const aarch64_feature_set aarch64_feature_sve =
AARCH64_FEATURE ( SVE ) ;
static const aarch64_feature_set aarch64_feature_pac =
AARCH64_FEATURE ( PAC ) ;
static const aarch64_feature_set aarch64_feature_pauth =
AARCH64_FEATURE ( PAUTH ) ;
static const aarch64_feature_set aarch64_feature_compnum =
AARCH64_FEATURE ( COMPNUM ) ;
static const aarch64_feature_set aarch64_feature_jscvt =
@ -2662,7 +2662,7 @@ static const aarch64_feature_set aarch64_feature_rcpc3 =
# define FP_F16 &aarch64_feature_fp_f16
# define SIMD_F16 &aarch64_feature_simd_f16
# define SVE &aarch64_feature_sve
# define PAC &aarch64_feature_pac
# define PAUTH &aarch64_feature_pauth
# define COMPNUM &aarch64_feature_compnum
# define JSCVT &aarch64_feature_jscvt
# define RCPC &aarch64_feature_rcpc
@ -2745,8 +2745,8 @@ static const aarch64_feature_set aarch64_feature_rcpc3 =
# define _SVE_INSNC(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \
{ NAME , OPCODE , MASK , CLASS , OP , SVE , OPS , QUALS , \
FLAGS | F_STRICT , CONSTRAINTS , TIED , NULL }
# define PAC _INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
{ NAME , OPCODE , MASK , CLASS , 0 , PAC , OPS , QUALS , FLAGS , 0 , 0 , NULL }
# define PAUTH _INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
{ NAME , OPCODE , MASK , CLASS , 0 , PAUTH , OPS , QUALS , FLAGS , 0 , 0 , NULL }
# define CNUM_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \
{ NAME , OPCODE , MASK , CLASS , OP , COMPNUM , OPS , QUALS , FLAGS , 0 , 0 , NULL }
# define JSCVT_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
@ -3619,18 +3619,18 @@ const struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ( " ret " , 0xd65f0000 , 0xfffffc1f , branch_reg , 0 , OP1 ( Rn ) , QL_I1X , F_OPD0_OPT | F_DEFAULT ( 30 ) ) ,
CORE_INSN ( " eret " , 0xd69f03e0 , 0xffffffff , branch_reg , 0 , OP0 ( ) , { } , 0 ) ,
CORE_INSN ( " drps " , 0xd6bf03e0 , 0xffffffff , branch_reg , 0 , OP0 ( ) , { } , 0 ) ,
PAC _INSN ( " braa " , 0xd71f0800 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " brab " , 0xd71f0c00 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " blraa " , 0xd73f0800 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " blrab " , 0xd73f0c00 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " braaz " , 0xd61f081f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAC _INSN ( " brabz " , 0xd61f0c1f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAC _INSN ( " blraaz " , 0xd63f081f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAC _INSN ( " blrabz " , 0xd63f0c1f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAC _INSN ( " retaa " , 0xd65f0bff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAC _INSN ( " retab " , 0xd65f0fff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAC _INSN ( " eretaa " , 0xd69f0bff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAC _INSN ( " eretab " , 0xd69f0fff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAUTH _INSN ( " braa " , 0xd71f0800 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " brab " , 0xd71f0c00 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " blraa " , 0xd73f0800 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " blrab " , 0xd73f0c00 , 0xfffffc00 , branch_reg , OP2 ( Rn , Rd_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " braaz " , 0xd61f081f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " brabz " , 0xd61f0c1f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " blraaz " , 0xd63f081f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " blrabz " , 0xd63f0c1f , 0xfffffc1f , branch_reg , OP1 ( Rn ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " retaa " , 0xd65f0bff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAUTH _INSN ( " retab " , 0xd65f0fff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAUTH _INSN ( " eretaa " , 0xd69f0bff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
PAUTH _INSN ( " eretab " , 0xd69f0fff , 0xffffffff , branch_reg , OP0 ( ) , { } , 0 ) ,
/* Compare & branch (immediate). */
CORE_INSN ( " cbz " , 0x34000000 , 0x7f000000 , compbranch , 0 , OP2 ( Rt , ADDR_PCREL19 ) , QL_R_PCREL , F_SF ) ,
CORE_INSN ( " cbnz " , 0x35000000 , 0x7f000000 , compbranch , 0 , OP2 ( Rt , ADDR_PCREL19 ) , QL_R_PCREL , F_SF ) ,
@ -3678,24 +3678,24 @@ const struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ( " clz " , 0x5ac01000 , 0x7ffffc00 , dp_1src , 0 , OP2 ( Rd , Rn ) , QL_I2SAME , F_SF ) ,
CORE_INSN ( " cls " , 0x5ac01400 , 0x7ffffc00 , dp_1src , 0 , OP2 ( Rd , Rn ) , QL_I2SAME , F_SF ) ,
CORE_INSN ( " rev32 " , 0xdac00800 , 0xfffffc00 , dp_1src , 0 , OP2 ( Rd , Rn ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " pacia " , 0xdac10000 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " pacib " , 0xdac10400 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " pacda " , 0xdac10800 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " pacdb " , 0xdac10c00 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " autia " , 0xdac11000 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " autib " , 0xdac11400 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " autda " , 0xdac11800 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " autdb " , 0xdac11c00 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAC _INSN ( " paciza " , 0xdac123e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " pacizb " , 0xdac127e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " pacdza " , 0xdac12be0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " pacdzb " , 0xdac12fe0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " autiza " , 0xdac133e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " autizb " , 0xdac137e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " autdza " , 0xdac13be0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " autdzb " , 0xdac13fe0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " xpaci " , 0xdac143e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAC _INSN ( " xpacd " , 0xdac147e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " pacia " , 0xdac10000 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " pacib " , 0xdac10400 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " pacda " , 0xdac10800 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " pacdb " , 0xdac10c00 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " autia " , 0xdac11000 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " autib " , 0xdac11400 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " autda " , 0xdac11800 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " autdb " , 0xdac11c00 , 0xfffffc00 , dp_1src , OP2 ( Rd , Rn_SP ) , QL_I2SAMEX , 0 ) ,
PAUTH _INSN ( " paciza " , 0xdac123e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " pacizb " , 0xdac127e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " pacdza " , 0xdac12be0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " pacdzb " , 0xdac12fe0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " autiza " , 0xdac133e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " autizb " , 0xdac137e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " autdza " , 0xdac13be0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " autdzb " , 0xdac13fe0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " xpaci " , 0xdac143e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
PAUTH _INSN ( " xpacd " , 0xdac147e0 , 0xffffffe0 , dp_1src , OP1 ( Rd ) , QL_I1X , 0 ) ,
/* Data-processing (2 source). */
CORE_INSN ( " udiv " , 0x1ac00800 , 0x7fe0fc00 , dp_2src , 0 , OP3 ( Rd , Rn , Rm ) , QL_I3SAMER , F_SF ) ,
CORE_INSN ( " sdiv " , 0x1ac00c00 , 0x7fe0fc00 , dp_2src , 0 , OP3 ( Rd , Rn , Rm ) , QL_I3SAMER , F_SF ) ,
@ -3712,7 +3712,7 @@ const struct aarch64_opcode aarch64_opcode_table[] =
MEMTAG_INSN ( " cmpp " , 0xbac0001f , 0xffe0fc1f , dp_2src , OP2 ( Rn_SP , Rm_SP ) , QL_I2SAMEX , F_ALIAS ) ,
MEMTAG_INSN ( " irg " , 0x9ac01000 , 0xffe0fc00 , dp_2src , OP3 ( Rd_SP , Rn_SP , Rm ) , QL_I3SAMEX , F_OPD2_OPT | F_DEFAULT ( 0x1f ) ) ,
MEMTAG_INSN ( " gmi " , 0x9ac01400 , 0xffe0fc00 , dp_2src , OP3 ( Rd , Rn_SP , Rm ) , QL_I3SAMEX , 0 ) ,
PAC _INSN ( " pacga " , 0x9ac03000 , 0xffe0fc00 , dp_2src , OP3 ( Rd , Rn , Rm_SP ) , QL_I3SAMEX , 0 ) ,
PAUTH _INSN ( " pacga " , 0x9ac03000 , 0xffe0fc00 , dp_2src , OP3 ( Rd , Rn , Rm_SP ) , QL_I3SAMEX , 0 ) ,
/* CRC instructions. */
_CRC_INSN ( " crc32b " , 0x1ac04000 , 0xffe0fc00 , dp_2src , OP3 ( Rd , Rn , Rm ) , QL_I3SAMEW , 0 ) ,
_CRC_INSN ( " crc32h " , 0x1ac04400 , 0xffe0fc00 , dp_2src , OP3 ( Rd , Rn , Rm ) , QL_I3SAMEW , 0 ) ,
@ -3942,8 +3942,8 @@ const struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ( " prfum " , 0xf8800000 , 0xffe00c00 , ldst_unscaled , OP_PRFUM , OP2 ( PRFOP , ADDR_SIMM9 ) , QL_LDST_PRFM , 0 ) ,
MEMTAG_INSN ( " ldg " , 0xd9600000 , 0xffe00c00 , ldst_unscaled , OP2 ( Rt , ADDR_SIMM13 ) , QL_LDG , 0 ) ,
/* Load/store register (scaled signed immediate). */
PAC _INSN ( " ldraa " , 0xf8200400 , 0xffa00400 , ldst_imm10 , OP2 ( Rt , ADDR_SIMM10 ) , QL_X1NIL , 0 ) ,
PAC _INSN ( " ldrab " , 0xf8a00400 , 0xffa00400 , ldst_imm10 , OP2 ( Rt , ADDR_SIMM10 ) , QL_X1NIL , 0 ) ,
PAUTH _INSN ( " ldraa " , 0xf8200400 , 0xffa00400 , ldst_imm10 , OP2 ( Rt , ADDR_SIMM10 ) , QL_X1NIL , 0 ) ,
PAUTH _INSN ( " ldrab " , 0xf8a00400 , 0xffa00400 , ldst_imm10 , OP2 ( Rt , ADDR_SIMM10 ) , QL_X1NIL , 0 ) ,
/* Load/store exclusive. */
CORE_INSN ( " stxrb " , 0x8007c00 , 0xffe08000 , ldstexcl , 0 , OP3 ( Rs , Rt , ADDR_SIMPLE ) , QL_W2_LDST_EXC , 0 ) ,
CORE_INSN ( " stlxrb " , 0x800fc00 , 0xffe08000 , ldstexcl , 0 , OP3 ( Rs , Rt , ADDR_SIMPLE ) , QL_W2_LDST_EXC , 0 ) ,