aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes/aarch64-asm-2.c136
-rw-r--r--opcodes/aarch64-asm.c2
-rw-r--r--opcodes/aarch64-dis-2.c1469
-rw-r--r--opcodes/aarch64-opc-2.c13
4 files changed, 1056 insertions, 564 deletions
diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c
index 6d5aebb..2b7afd2 100644
--- a/opcodes/aarch64-asm-2.c
+++ b/opcodes/aarch64-asm-2.c
@@ -670,26 +670,26 @@ aarch64_insert_operand (const aarch64_operand *self,
case 204:
case 205:
case 206:
- case 207:
- case 208:
- case 209:
- case 210:
- case 211:
+ case 215:
+ case 216:
+ case 217:
case 218:
- case 221:
- case 225:
- case 232:
- case 233:
- case 240:
- case 241:
+ case 219:
+ case 227:
+ case 231:
+ case 235:
case 242:
case 243:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
return aarch64_ins_regno (self, info, code, inst, errors);
case 6:
case 113:
case 114:
- case 275:
- case 277:
+ case 285:
+ case 287:
return aarch64_ins_none (self, info, code, inst, errors);
case 17:
return aarch64_ins_reg_extended (self, info, code, inst, errors);
@@ -701,7 +701,7 @@ aarch64_insert_operand (const aarch64_operand *self,
case 35:
case 36:
case 37:
- case 279:
+ case 289:
return aarch64_ins_reglane (self, info, code, inst, errors);
case 38:
return aarch64_ins_reglist (self, info, code, inst, errors);
@@ -747,13 +747,13 @@ aarch64_insert_operand (const aarch64_operand *self,
case 200:
case 201:
case 202:
- case 246:
- case 273:
- case 274:
- case 276:
- case 278:
+ case 256:
case 283:
case 284:
+ case 286:
+ case 288:
+ case 293:
+ case 294:
return aarch64_ins_imm (self, info, code, inst, errors);
case 46:
case 47:
@@ -901,74 +901,90 @@ aarch64_insert_operand (const aarch64_operand *self,
case 192:
case 193:
case 194:
- case 259:
+ case 269:
return aarch64_ins_sve_shrimm (self, info, code, inst, errors);
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ return aarch64_ins_sme_za_vrs1 (self, info, code, inst, errors);
+ case 211:
case 212:
case 213:
case 214:
- case 215:
- case 216:
- case 217:
- return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
- case 219:
- return aarch64_ins_sve_index (self, info, code, inst, errors);
+ return aarch64_ins_sme_za_vrs2 (self, info, code, inst, errors);
case 220:
+ case 221:
case 222:
- case 239:
- return aarch64_ins_sve_reglist (self, info, code, inst, errors);
case 223:
case 224:
+ case 225:
case 226:
- case 227:
+ return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
case 228:
+ return aarch64_ins_sve_index_imm (self, info, code, inst, errors);
case 229:
- case 238:
- return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors);
+ return aarch64_ins_sve_index (self, info, code, inst, errors);
case 230:
- case 231:
- return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors);
+ case 232:
+ case 249:
+ case 295:
+ case 296:
+ case 297:
+ return aarch64_ins_sve_reglist (self, info, code, inst, errors);
+ case 233:
case 234:
case 236:
- case 247:
- return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors);
- case 235:
case 237:
- return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors);
+ case 238:
+ case 239:
+ case 248:
+ return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors);
+ case 240:
+ case 241:
+ return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors);
case 244:
+ case 246:
+ case 257:
+ return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors);
case 245:
+ case 247:
+ return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors);
+ case 254:
+ case 255:
+ case 270:
+ case 271:
+ case 272:
+ case 273:
+ case 274:
+ case 275:
+ case 276:
+ case 277:
+ case 278:
+ case 279:
+ case 280:
+ case 281:
+ case 282:
+ return aarch64_ins_simple_index (self, info, code, inst, errors);
+ case 258:
+ case 259:
case 260:
case 261:
case 262:
case 263:
case 264:
- case 265:
- case 266:
- case 267:
- case 268:
- case 269:
- case 270:
- case 271:
- case 272:
- return aarch64_ins_simple_index (self, info, code, inst, errors);
- case 248:
- case 249:
- case 250:
- case 251:
- case 252:
- case 253:
- case 254:
return aarch64_ins_sme_za_array (self, info, code, inst, errors);
- case 255:
+ case 265:
return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors);
- case 256:
+ case 266:
return aarch64_ins_sme_sm_za (self, info, code, inst, errors);
- case 257:
+ case 267:
return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors);
- case 258:
+ case 268:
return aarch64_ins_plain_shrimm (self, info, code, inst, errors);
- case 280:
- case 281:
- case 282:
+ case 290:
+ case 291:
+ case 292:
return aarch64_ins_x0_to_x30 (self, info, code, inst, errors);
default: assert (0); abort ();
}
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index 0de09f0..4d0b13e 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -1999,7 +1999,7 @@ do_special_encoding (struct aarch64_inst *inst)
if ((inst->opcode->flags & F_OPD_SIZE) && inst->opcode->iclass == sve2_urqvs)
{
- enum aarch64_opnd_qualifier qualifier[1];
+ enum aarch64_opnd_qualifier qualifier[2];
aarch64_insn value1 = 0;
idx = 0;
qualifier[0] = inst->operands[idx].qualifier;
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index cfaecb5..31c7f66 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -252,11 +252,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000000xx0x011xxxxx00xxxxxxxxxx
- mov. */
- return 2655;
+ if (((word >> 9) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000xx0x011xxxxx000xxxxxxxxx
+ mov. */
+ return 2655;
+ }
+ else
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000000x011xxxxx001xxxxxxxxx
+ movaz. */
+ return 3283;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000100x011xxxxx001xxxxxxxxx
+ movaz. */
+ return 3285;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000010x011xxxxx001xxxxxxxxx
+ movaz. */
+ return 3284;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000110x011xxxxx001xxxxxxxxx
+ movaz. */
+ return 3286;
+ }
+ }
+ }
}
}
else
@@ -346,11 +390,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000000xx0xx11xxxxx01xxxxxxxxxx
- mov. */
- return 2656;
+ if (((word >> 9) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000xx0xx11xxxxx010xxxxxxxxx
+ mov. */
+ return 2656;
+ }
+ else
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000000xx11xxxxx011xxxxxxxxx
+ movaz. */
+ return 3279;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000100xx11xxxxx011xxxxxxxxx
+ movaz. */
+ return 3281;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000010xx11xxxxx011xxxxxxxxx
+ movaz. */
+ return 3280;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000000110xx11xxxxx011xxxxxxxxx
+ movaz. */
+ return 3282;
+ }
+ }
+ }
}
}
else
@@ -13332,55 +13420,143 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 17) & 0x1) == 0)
{
- if (((word >> 19) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 19) & 0x1) == 0)
{
- if (((word >> 16) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 000001x0xx000x00001xxxxxxxxxxxxx
- saddv. */
- return 1855;
+ if (((word >> 16) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx000000001xxxxxxxxxxxxx
+ saddv. */
+ return 1855;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx000001001xxxxxxxxxxxxx
+ uaddv. */
+ return 2008;
+ }
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx000x01001xxxxxxxxxxxxx
- uaddv. */
- return 2008;
+ 000001x0xx01000x001xxxxxxxxxxxxx
+ movprfx. */
+ return 1789;
}
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 000001x0xx010x0x001xxxxxxxxxxxxx
- movprfx. */
- return 1789;
+ if (((word >> 16) & 0x1) == 0)
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx001000001xxxxxxxxxxxxx
+ smaxv. */
+ return 1873;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx011000001xxxxxxxxxxxxx
+ orv. */
+ return 1806;
+ }
+ }
+ else
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx001001001xxxxxxxxxxxxx
+ umaxv. */
+ return 2023;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx011001001xxxxxxxxxxxxx
+ eorv. */
+ return 1420;
+ }
+ }
}
}
else
{
if (((word >> 16) & 0x1) == 0)
{
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx0xx100001xxxxxxxxxxxxx
+ smaxqv. */
+ return 3289;
+ }
+ else
+ {
+ if (((word >> 19) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx0x0101001xxxxxxxxxxxxx
+ addqv. */
+ return 3287;
+ }
+ else
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx001101001xxxxxxxxxxxxx
+ umaxqv. */
+ return 3291;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x0xx011101001xxxxxxxxxxxxx
+ eorqv. */
+ return 3293;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if (((word >> 16) & 0x1) == 0)
+ {
+ if (((word >> 18) & 0x1) == 0)
+ {
if (((word >> 20) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx001x00001xxxxxxxxxxxxx
- smaxv. */
- return 1873;
+ 000001x0xx00x010001xxxxxxxxxxxxx
+ sminv. */
+ return 1876;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx011x00001xxxxxxxxxxxxx
- orv. */
- return 1806;
+ 000001x0xx01x010001xxxxxxxxxxxxx
+ andv. */
+ return 1333;
}
}
else
@@ -13389,50 +13565,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx001x01001xxxxxxxxxxxxx
- umaxv. */
- return 2023;
+ 000001x0xx00x110001xxxxxxxxxxxxx
+ sminqv. */
+ return 3290;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx011x01001xxxxxxxxxxxxx
- eorv. */
- return 1420;
+ 000001x0xx01x110001xxxxxxxxxxxxx
+ andqv. */
+ return 3288;
}
}
}
- }
- else
- {
- if (((word >> 16) & 0x1) == 0)
+ else
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx00xx10001xxxxxxxxxxxxx
- sminv. */
- return 1876;
+ 000001x0xx0xx011001xxxxxxxxxxxxx
+ uminv. */
+ return 2026;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 000001x0xx01xx10001xxxxxxxxxxxxx
- andv. */
- return 1333;
+ 000001x0xx0xx111001xxxxxxxxxxxxx
+ uminqv. */
+ return 3292;
}
}
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 000001x0xx0xxx11001xxxxxxxxxxxxx
- uminv. */
- return 2026;
- }
}
}
else
@@ -14168,21 +14333,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 110001x00x0xxxxx101xxxxxxxxxxxxx
- ldff1sb. */
- return 1712;
+ 110001x0x00xxxxx101xxxxxxxxxxxxx
+ ld1q. */
+ return 3301;
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 110001x01x0xxxxx101xxxxxxxxxxxxx
- ldff1sh. */
- return 1723;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 110001x0010xxxxx101xxxxxxxxxxxxx
+ ldff1sb. */
+ return 1712;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 110001x0110xxxxx101xxxxxxxxxxxxx
+ ldff1sh. */
+ return 1723;
+ }
}
}
}
@@ -15632,31 +15808,64 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 13) & 0x1) == 0)
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 14) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x0x00xxxxx0x0xxxxxxxxxxxxx
- st1b. */
- return 1911;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0x00xxxxx000xxxxxxxxxxxxx
+ st3q. */
+ return 3310;
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0010xxxxx000xxxxxxxxxxxxx
+ st2q. */
+ return 3309;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0110xxxxx000xxxxxxxxxxxxx
+ st4q. */
+ return 3311;
+ }
+ }
}
else
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 111001x0010xxxxx0x0xxxxxxxxxxxxx
+ 111001x0x00xxxxx010xxxxxxxxxxxxx
st1b. */
- return 1915;
+ return 1911;
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x0110xxxxx0x0xxxxxxxxxxxxx
- st1h. */
- return 1936;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0010xxxxx010xxxxxxxxxxxxx
+ st1b. */
+ return 1915;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0110xxxxx010xxxxxxxxxxxxx
+ st1h. */
+ return 1936;
+ }
}
}
}
@@ -16058,99 +16267,154 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
- {
- if (((word >> 31) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 011001x0000xxxxx101xxxxxxxxxxxxx
- fcvtxnt. */
- return 2121;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x0000xxxxx101xxxxxxxxxxxxx
- st1b. */
- return 1913;
- }
- }
- else
+ if (((word >> 16) & 0x1) == 0)
{
- if (((word >> 31) & 0x1) == 0)
+ if (((word >> 17) & 0x1) == 0)
{
- if (((word >> 16) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 17) & 0x1) == 0)
+ if (((word >> 19) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0100xxx00101xxxxxxxxxxxxx
- fcvtnt. */
- return 2118;
+ 011001x0xx0x0000101xxxxxxxxxxxxx
+ faddqv. */
+ return 3294;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0100xxx10101xxxxxxxxxxxxx
- bfcvtnt. */
- return 3050;
+ 011001x0xx0x1000101xxxxxxxxxxxxx
+ fcvtnt. */
+ return 2118;
}
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0100xxxx1101xxxxxxxxxxxxx
- fcvtlt. */
- return 2116;
+ 011001x0xx0xx100101xxxxxxxxxxxxx
+ fmaxnmqv. */
+ return 3295;
}
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x0100xxxxx101xxxxxxxxxxxxx
- st1h. */
- return 1932;
+ if (((word >> 18) & 0x1) == 0)
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0000xx010101xxxxxxxxxxxxx
+ fcvtxnt. */
+ return 2121;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0100xx010101xxxxxxxxxxxxx
+ bfcvtnt. */
+ return 3050;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0x10xx010101xxxxxxxxxxxxx
+ fcvtnt. */
+ return 2119;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0xx0xx110101xxxxxxxxxxxxx
+ fmaxqv. */
+ return 3296;
+ }
}
}
- }
- else
- {
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0010xxxxx101xxxxxxxxxxxxx
- st1b. */
- return 1920;
- }
else
{
- if (((word >> 31) & 0x1) == 0)
+ if (((word >> 17) & 0x1) == 0)
{
- if (((word >> 16) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0110xxxx0101xxxxxxxxxxxxx
- fcvtnt. */
- return 2119;
+ 011001x0xx0xx001101xxxxxxxxxxxxx
+ fcvtlt. */
+ return 2116;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0110xxxx1101xxxxxxxxxxxxx
+ 011001x0xx0xx101101xxxxxxxxxxxxx
+ fminnmqv. */
+ return 3297;
+ }
+ }
+ else
+ {
+ if (((word >> 18) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0xx0xx011101xxxxxxxxxxxxx
fcvtlt. */
return 2117;
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0xx0xx111101xxxxxxxxxxxxx
+ fminqv. */
+ return 3298;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0000xxxxx101xxxxxxxxxxxxx
+ st1b. */
+ return 1913;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0100xxxxx101xxxxxxxxxxxxx
+ st1h. */
+ return 1932;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0010xxxxx101xxxxxxxxxxxxx
+ st1b. */
+ return 1920;
}
else
{
@@ -16189,43 +16453,54 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x0000xxxxx111xxxxxxxxxxxxx
- ldnt1b. */
- return 1763;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x00000xxxx111xxxxxxxxxxxxx
+ ldnt1b. */
+ return 1763;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x01000xxxx111xxxxxxxxxxxxx
+ ldnt1h. */
+ return 1767;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x0100xxxxx111xxxxxxxxxxxxx
- ldnt1h. */
- return 1767;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x00100xxxx111xxxxxxxxxxxxx
+ ld3b. */
+ return 1655;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x01100xxxx111xxxxxxxxxxxxx
+ ld3h. */
+ return 1659;
+ }
}
}
else
{
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x0010xxxxx111xxxxxxxxxxxxx
- ld3b. */
- return 1655;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x0110xxxxx111xxxxxxxxxxxxx
- ld3h. */
- return 1659;
- }
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x0xx01xxxx111xxxxxxxxxxxxx
+ ld2q. */
+ return 3302;
}
}
}
@@ -16446,86 +16721,141 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 14) & 0x1) == 0)
{
- if (((word >> 12) & 0x1) == 0)
+ if (((word >> 23) & 0x1) == 0)
{
- if (((word >> 10) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x00x1xxxxx0000x0xxxxxxxxxx
- fmla. */
- return 1485;
- }
- else
+ if (((word >> 10) & 0x1) == 0)
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 11) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0101xxxxx0000x0xxxxxxxxxx
+ 011001x00x1xxxxx000x00xxxxxxxxxx
fmla. */
- return 1486;
+ return 1485;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0111xxxxx0000x0xxxxxxxxxx
- fmla. */
- return 1487;
+ 011001x00x1xxxxx000x10xxxxxxxxxx
+ bfmla. */
+ return 3276;
}
}
- }
- else
- {
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x00x1xxxxx0000x1xxxxxxxxxx
- fmls. */
- return 1489;
- }
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 11) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0101xxxxx0000x1xxxxxxxxxx
+ 011001x00x1xxxxx000x01xxxxxxxxxx
fmls. */
- return 1490;
+ return 1489;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0111xxxxx0000x1xxxxxxxxxx
- fmls. */
- return 1491;
+ 011001x00x1xxxxx000x11xxxxxxxxxx
+ bfmls. */
+ return 3277;
}
}
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x00x1xxxxx000xxxxxxxxxxxxx
+ st2q. */
+ return 3312;
+ }
}
else
{
if (((word >> 22) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0x01xxxxx0001xxxxxxxxxxxx
- fcmla. */
- return 1433;
+ if (((word >> 31) & 0x1) == 0)
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ if (((word >> 10) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0101xxxxx0000x0xxxxxxxxxx
+ fmla. */
+ return 1486;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0101xxxxx0000x1xxxxxxxxxx
+ fmls. */
+ return 1490;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0101xxxxx0001xxxxxxxxxxxx
+ fcmla. */
+ return 1433;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0101xxxxx000xxxxxxxxxxxxx
+ st3q. */
+ return 3313;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0x11xxxxx0001xxxxxxxxxxxx
- fcmla. */
- return 1434;
+ if (((word >> 31) & 0x1) == 0)
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ if (((word >> 10) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx0000x0xxxxxxxxxx
+ fmla. */
+ return 1487;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx0000x1xxxxxxxxxx
+ fmls. */
+ return 1491;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx0001xxxxxxxxxxxx
+ fcmla. */
+ return 1434;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0111xxxxx000xxxxxxxxxxxxx
+ st4q. */
+ return 3314;
+ }
}
}
}
@@ -16949,43 +17279,65 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 15) & 0x1) == 0)
{
- if (((word >> 10) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x00x1xxxxx001xx0xxxxxxxxxx
- fmul. */
- return 1496;
- }
- else
+ if (((word >> 10) & 0x1) == 0)
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 11) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0101xxxxx001xx0xxxxxxxxxx
- fmul. */
- return 1497;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x00x1xxxxx001x00xxxxxxxxxx
+ fmul. */
+ return 1496;
+ }
+ else
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0101xxxxx001x00xxxxxxxxxx
+ fmul. */
+ return 1497;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx001x00xxxxxxxxxx
+ fmul. */
+ return 1498;
+ }
+ }
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0111xxxxx001xx0xxxxxxxxxx
- fmul. */
- return 1498;
+ 011001x0xx1xxxxx001x10xxxxxxxxxx
+ bfmul. */
+ return 3278;
}
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0xx1xxxxx001xx1xxxxxxxxxx
+ fclamp. */
+ return 2456;
+ }
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x0xx1xxxxx001xx1xxxxxxxxxx
- fclamp. */
- return 2456;
+ 111001x0xx1xxxxx001xxxxxxxxxxxxx
+ st1q. */
+ return 3308;
}
}
else
@@ -17723,11 +18075,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 000001x1xx1xxxxx001xx1xxxxxxxxxx
- tbx. */
- return 2299;
+ if (((word >> 11) & 0x1) == 0)
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x1x01xxxxx001x01xxxxxxxxxx
+ dupq. */
+ return 3299;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x1x11xxxxx001x01xxxxxxxxxx
+ extq. */
+ return 3300;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000001x1xx1xxxxx001x11xxxxxxxxxx
+ tbx. */
+ return 2299;
+ }
}
}
else
@@ -21587,23 +21961,45 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x1000xxxxx111xxxxxxxxxxxxx
- ldnt1w. */
- return 1769;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10000xxxx111xxxxxxxxxxxxx
+ ldnt1w. */
+ return 1769;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11000xxxx111xxxxxxxxxxxxx
+ ldnt1d. */
+ return 1765;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x1100xxxxx111xxxxxxxxxxxxx
- ldnt1d. */
- return 1765;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10100xxxx111xxxxxxxxxxxxx
+ ld3w. */
+ return 1661;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11100xxxx111xxxxxxxxxxxxx
+ ld3d. */
+ return 1657;
+ }
}
}
else
@@ -21612,17 +22008,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 101001x1010xxxxx111xxxxxxxxxxxxx
- ld3w. */
- return 1661;
+ 101001x10x01xxxx111xxxxxxxxxxxxx
+ ld3q. */
+ return 3303;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 101001x1110xxxxx111xxxxxxxxxxxxx
- ld3d. */
- return 1657;
+ 101001x11x01xxxx111xxxxxxxxxxxxx
+ ld4q. */
+ return 3304;
}
}
}
@@ -22546,127 +22942,94 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 14) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
- if (((word >> 31) & 0x1) == 0)
+ if (((word >> 9) & 0x1) == 0)
{
- if (((word >> 9) & 0x1) == 0)
+ if (((word >> 16) & 0x1) == 0)
{
- if (((word >> 16) & 0x1) == 0)
+ if (((word >> 17) & 0x1) == 0)
{
- if (((word >> 17) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 18) & 0x1) == 0)
+ if (((word >> 19) & 0x1) == 0)
{
- if (((word >> 19) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10000010xxxx0xxxxxxxxx
- cntp. */
- return 1394;
- }
- else
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1x000010xxxx0xxxxxxxxx
+ cntp. */
+ return 1394;
+ }
+ else
+ {
+ if (((word >> 10) & 0x1) == 0)
{
- if (((word >> 10) & 0x1) == 0)
+ if (((word >> 11) & 0x1) == 0)
{
- if (((word >> 11) & 0x1) == 0)
+ if (((word >> 12) & 0x1) == 0)
{
- if (((word >> 12) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10100010x0000xxxxxxxxx
- sqincp. */
- return 1903;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10100010x1000xxxxxxxxx
- wrffr. */
- return 2077;
- }
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1x100010x0000xxxxxxxxx
+ sqincp. */
+ return 1903;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10100010xx100xxxxxxxxx
- sqincp. */
- return 1905;
+ 001001x1xx1x100010x1000xxxxxxxxx
+ wrffr. */
+ return 2077;
}
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10100010xxx10xxxxxxxxx
+ 001001x1xx1x100010xx100xxxxxxxxx
sqincp. */
- return 1904;
- }
- }
- }
- else
- {
- if (((word >> 11) & 0x1) == 0)
- {
- if (((word >> 12) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x10010x00x0xxxxxxxxx
- incp. */
- return 1532;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x10010x10x0xxxxxxxxx
- setffr. */
- return 1870;
+ return 1905;
}
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10x10010xx1x0xxxxxxxxx
- incp. */
- return 1533;
+ 001001x1xx1x100010xxx10xxxxxxxxx
+ sqincp. */
+ return 1904;
}
}
}
else
{
- if (((word >> 10) & 0x1) == 0)
+ if (((word >> 11) & 0x1) == 0)
{
- if (((word >> 11) & 0x1) == 0)
+ if (((word >> 12) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1010xx000xxxxxxxxx
- sqdecp. */
- return 1889;
+ 001001x1xx1xx10010x00x0xxxxxxxxx
+ incp. */
+ return 1532;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1010xx100xxxxxxxxx
- sqdecp. */
- return 1891;
+ 001001x1xx1xx10010x10x0xxxxxxxxx
+ setffr. */
+ return 1870;
}
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1010xxx10xxxxxxxxx
- sqdecp. */
- return 1890;
+ 001001x1xx1xx10010xx1x0xxxxxxxxx
+ incp. */
+ return 1533;
}
}
}
@@ -22676,175 +23039,230 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 11) & 0x1) == 0)
{
- if (((word >> 17) & 0x1) == 0)
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx1010xx000xxxxxxxxx
+ sqdecp. */
+ return 1889;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx1010xx100xxxxxxxxx
+ sqdecp. */
+ return 1891;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx1010xxx10xxxxxxxxx
+ sqdecp. */
+ return 1890;
+ }
+ }
+ }
+ else
+ {
+ if (((word >> 10) & 0x1) == 0)
+ {
+ if (((word >> 11) & 0x1) == 0)
+ {
+ if (((word >> 17) & 0x1) == 0)
+ {
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 18) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x00110xx000xxxxxxxxx
- uqincp. */
- return 2052;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x10110xx000xxxxxxxxx
- decp. */
- return 1407;
- }
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xx00110xx000xxxxxxxxx
+ uqincp. */
+ return 2052;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1110xx000xxxxxxxxx
- uqdecp. */
- return 2038;
+ 001001x1xx1xx10110xx000xxxxxxxxx
+ decp. */
+ return 1407;
}
}
else
{
- if (((word >> 17) & 0x1) == 0)
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx1110xx000xxxxxxxxx
+ uqdecp. */
+ return 2038;
+ }
+ }
+ else
+ {
+ if (((word >> 17) & 0x1) == 0)
+ {
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 18) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x00110xx100xxxxxxxxx
- uqincp. */
- return 2053;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10x10110xx100xxxxxxxxx
- decp. */
- return 1408;
- }
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xx00110xx100xxxxxxxxx
+ uqincp. */
+ return 2053;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1110xx100xxxxxxxxx
- uqdecp. */
- return 2039;
+ 001001x1xx1xx10110xx100xxxxxxxxx
+ decp. */
+ return 1408;
}
}
- }
- else
- {
- if (((word >> 17) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10xx0110xxx10xxxxxxxxx
- uqincp. */
- return 2054;
- }
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 001001x1xx10xx1110xxx10xxxxxxxxx
+ 001001x1xx1xxx1110xx100xxxxxxxxx
uqdecp. */
- return 2040;
+ return 2039;
}
}
}
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 001001x1xx10xxxx10xxxx1xxxxxxxxx
- cntp. */
- return 2510;
- }
- }
- else
- {
- if (((word >> 22) & 0x1) == 0)
- {
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x10010xxxx10xxxxxxxxxxxxxx
- ld1sh. */
- return 1625;
- }
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x11010xxxx10xxxxxxxxxxxxxx
- ld1sb. */
- return 1612;
- }
- }
- else
- {
- if (((word >> 23) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x10110xxxx10xxxxxxxxxxxxxx
- ld1w. */
- return 1644;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 101001x11110xxxx10xxxxxxxxxxxxxx
- ld1d. */
- return 1564;
+ if (((word >> 17) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx0110xxx10xxxxxxxxx
+ uqincp. */
+ return 2054;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxx1110xxx10xxxxxxxxx
+ uqdecp. */
+ return 2040;
+ }
}
}
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 001001x1xx1xxxxx10xxxx1xxxxxxxxx
+ cntp. */
+ return 2510;
+ }
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 13) & 0x1) == 0)
{
if (((word >> 23) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x01001x10011xxxx10xxxxxxxxxxxxxx
- ldnf1sh. */
- return 1758;
+ 101001x10x1xxxxx100xxxxxxxxxxxxx
+ ld3q. */
+ return 3306;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x01001x11011xxxx10xxxxxxxxxxxxxx
- ldnf1sb. */
- return 1755;
+ 101001x11x1xxxxx100xxxxxxxxxxxxx
+ ld4q. */
+ return 3307;
}
}
else
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x01001x10111xxxx10xxxxxxxxxxxxxx
- ldnf1w. */
- return 1761;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10010xxxx101xxxxxxxxxxxxx
+ ld1sh. */
+ return 1625;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11010xxxx101xxxxxxxxxxxxx
+ ld1sb. */
+ return 1612;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10110xxxx101xxxxxxxxxxxxx
+ ld1w. */
+ return 1644;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11110xxxx101xxxxxxxxxxxxx
+ ld1d. */
+ return 1564;
+ }
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x01001x11111xxxx10xxxxxxxxxxxxxx
- ldnf1d. */
- return 1750;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10011xxxx101xxxxxxxxxxxxx
+ ldnf1sh. */
+ return 1758;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11011xxxx101xxxxxxxxxxxxx
+ ldnf1sb. */
+ return 1755;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x10111xxxx101xxxxxxxxxxxxx
+ ldnf1w. */
+ return 1761;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 101001x11111xxxx101xxxxxxxxxxxxx
+ ldnf1d. */
+ return 1750;
+ }
+ }
}
}
}
@@ -31703,10 +32121,24 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
case 1678: return NULL; /* ldff1b --> NULL. */
case 1696: value = 1697; break; /* ldff1h --> ldff1h. */
case 1697: return NULL; /* ldff1h --> NULL. */
+ case 1651: value = 3305; break; /* ld2h --> ld2q. */
+ case 3305: return NULL; /* ld2q --> NULL. */
+ case 2456: value = 3271; break; /* fclamp --> bfclamp. */
+ case 3271: return NULL; /* bfclamp --> NULL. */
case 1770: value = 1771; break; /* ldr --> ldr. */
case 1771: return NULL; /* ldr --> NULL. */
+ case 1426: value = 3270; break; /* fadd --> bfadd. */
+ case 3270: return NULL; /* bfadd --> NULL. */
+ case 1493: value = 3273; break; /* fmul --> bfmul. */
+ case 3273: return NULL; /* bfmul --> NULL. */
+ case 1519: value = 3275; break; /* fsub --> bfsub. */
+ case 3275: return NULL; /* bfsub --> NULL. */
+ case 1484: value = 3268; break; /* fmla --> bfmla. */
+ case 3268: return NULL; /* bfmla --> NULL. */
case 1989: value = 1990; break; /* str --> str. */
case 1990: return NULL; /* str --> NULL. */
+ case 1488: value = 3269; break; /* fmls --> bfmls. */
+ case 3269: return NULL; /* bfmls --> NULL. */
case 1717: value = 1718; break; /* ldff1sh --> ldff1sh. */
case 1718: return NULL; /* ldff1sh --> NULL. */
case 1705: value = 1706; break; /* ldff1sb --> ldff1sb. */
@@ -31727,6 +32159,20 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
case 1684: return NULL; /* ldff1d --> NULL. */
case 1807: value = 1808; break; /* pfalse --> pfalse. */
case 1808: return NULL; /* pfalse --> NULL. */
+ case 1427: value = 3263; break; /* fadd --> bfadd. */
+ case 3263: return NULL; /* bfadd --> NULL. */
+ case 1474: value = 3265; break; /* fmaxnm --> bfmaxnm. */
+ case 3265: return NULL; /* bfmaxnm --> NULL. */
+ case 1494: value = 3272; break; /* fmul --> bfmul. */
+ case 3272: return NULL; /* bfmul --> NULL. */
+ case 1472: value = 3264; break; /* fmax --> bfmax. */
+ case 3264: return NULL; /* bfmax --> NULL. */
+ case 1520: value = 3274; break; /* fsub --> bfsub. */
+ case 3274: return NULL; /* bfsub --> NULL. */
+ case 1480: value = 3267; break; /* fminnm --> bfminnm. */
+ case 3267: return NULL; /* bfminnm --> NULL. */
+ case 1478: value = 3266; break; /* fmin --> bfmin. */
+ case 3266: return NULL; /* bfmin --> NULL. */
case 811: value = 812; break; /* xaflag --> axflag. */
case 812: value = 1206; break; /* axflag --> tcommit. */
case 1206: value = 1209; break; /* tcommit --> smstart. */
@@ -32354,26 +32800,26 @@ aarch64_extract_operand (const aarch64_operand *self,
case 204:
case 205:
case 206:
- case 207:
- case 208:
- case 209:
- case 210:
- case 211:
+ case 215:
+ case 216:
+ case 217:
case 218:
- case 221:
- case 225:
- case 232:
- case 233:
- case 240:
- case 241:
+ case 219:
+ case 227:
+ case 231:
+ case 235:
case 242:
case 243:
+ case 250:
+ case 251:
+ case 252:
+ case 253:
return aarch64_ext_regno (self, info, code, inst, errors);
case 6:
case 113:
case 114:
- case 275:
- case 277:
+ case 285:
+ case 287:
return aarch64_ext_none (self, info, code, inst, errors);
case 11:
return aarch64_ext_regrt_sysins (self, info, code, inst, errors);
@@ -32390,7 +32836,7 @@ aarch64_extract_operand (const aarch64_operand *self,
case 35:
case 36:
case 37:
- case 279:
+ case 289:
return aarch64_ext_reglane (self, info, code, inst, errors);
case 38:
return aarch64_ext_reglist (self, info, code, inst, errors);
@@ -32437,13 +32883,13 @@ aarch64_extract_operand (const aarch64_operand *self,
case 200:
case 201:
case 202:
- case 246:
- case 273:
- case 274:
- case 276:
- case 278:
+ case 256:
case 283:
case 284:
+ case 286:
+ case 288:
+ case 293:
+ case 294:
return aarch64_ext_imm (self, info, code, inst, errors);
case 46:
case 47:
@@ -32593,75 +33039,92 @@ aarch64_extract_operand (const aarch64_operand *self,
case 192:
case 193:
case 194:
- case 259:
+ case 269:
return aarch64_ext_sve_shrimm (self, info, code, inst, errors);
+ case 207:
+ case 208:
+ case 209:
+ case 210:
+ return aarch64_ext_sme_za_vrs1 (self, info, code, inst, errors);
+ case 211:
case 212:
case 213:
case 214:
- case 215:
- case 216:
- case 217:
- return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
- case 219:
- return aarch64_ext_sve_index (self, info, code, inst, errors);
+ return aarch64_ext_sme_za_vrs2 (self, info, code, inst, errors);
case 220:
+ case 221:
case 222:
- case 239:
- return aarch64_ext_sve_reglist (self, info, code, inst, errors);
case 223:
case 224:
+ case 225:
case 226:
- case 227:
+ return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
case 228:
+ return aarch64_ext_sve_index_imm (self, info, code, inst, errors);
case 229:
- case 238:
- return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors);
+ return aarch64_ext_sve_index (self, info, code, inst, errors);
case 230:
- case 231:
- return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors);
+ case 232:
+ case 249:
+ return aarch64_ext_sve_reglist (self, info, code, inst, errors);
+ case 233:
case 234:
case 236:
- case 247:
- return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors);
- case 235:
case 237:
- return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors);
+ case 238:
+ case 239:
+ case 248:
+ return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors);
+ case 240:
+ case 241:
+ return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors);
case 244:
+ case 246:
+ case 257:
+ return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors);
case 245:
+ case 247:
+ return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors);
+ case 254:
+ case 255:
+ case 270:
+ case 271:
+ case 272:
+ case 273:
+ case 274:
+ case 275:
+ case 276:
+ case 277:
+ case 278:
+ case 279:
+ case 280:
+ case 281:
+ case 282:
+ return aarch64_ext_simple_index (self, info, code, inst, errors);
+ case 258:
+ case 259:
case 260:
case 261:
case 262:
case 263:
case 264:
- case 265:
- case 266:
- case 267:
- case 268:
- case 269:
- case 270:
- case 271:
- case 272:
- return aarch64_ext_simple_index (self, info, code, inst, errors);
- case 248:
- case 249:
- case 250:
- case 251:
- case 252:
- case 253:
- case 254:
return aarch64_ext_sme_za_array (self, info, code, inst, errors);
- case 255:
+ case 265:
return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors);
- case 256:
+ case 266:
return aarch64_ext_sme_sm_za (self, info, code, inst, errors);
- case 257:
+ case 267:
return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors);
- case 258:
+ case 268:
return aarch64_ext_plain_shrimm (self, info, code, inst, errors);
- case 280:
- case 281:
- case 282:
+ case 290:
+ case 291:
+ case 292:
return aarch64_ext_x0_to_x30 (self, info, code, inst, errors);
+ case 295:
+ case 296:
+ case 297:
+ return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors);
default: assert (0); abort ();
}
}
diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c
index 89487da..30caeea 100644
--- a/opcodes/aarch64-opc-2.c
+++ b/opcodes/aarch64-opc-2.c
@@ -231,6 +231,14 @@ const struct aarch64_operand aarch64_operands[] =
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vd}, "a SIMD register"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vm}, "a SIMD register"},
{AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vn}, "a SIMD register"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off3}, "ZA0 tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_1,FLD_off2}, "1 bit ZA tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_2,FLD_ol}, "2 ZA tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 ZA tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "ZA0 tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn,FLD_ol}, "1 bit ZA tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "2 bit ZA tile"},
+ {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 bit ZA tile"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_5}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_16}, "an SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zd}, "an SVE vector register"},
@@ -241,8 +249,10 @@ const struct aarch64_operand aarch64_operands[] =
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_19_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm2_19, FLD_SVE_imm3}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i3h, FLD_SVE_Zm_16}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_11_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i2h, FLD_SVE_i3l, FLD_SVE_imm4}, "an indexed SVE vector register"},
+ {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_imm4", 5 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_5, FLD_SVE_imm4}, "an 4bit indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an SVE vector register"},
+ {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_5_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn, FLD_SVE_i2h, FLD_SVE_tsz}, "a 5 bit idexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an indexed SVE vector register"},
{AARCH64_OPND_CLASS_SVE_REGLIST, "SVE_ZnxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a list of SVE vector registers"},
{AARCH64_OPND_CLASS_SVE_REG, "SVE_Zt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "an SVE vector register"},
@@ -309,6 +319,9 @@ const struct aarch64_operand aarch64_operands[] =
{AARCH64_OPND_CLASS_INT_REG, "MOPS_WB_Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register with writeback"},
{AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_SIMM8", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit signed immediate"},
{AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_UIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit unsigned immediate"},
+ {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 2 SVE vector registers"},
+ {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 3 SVE vector registers"},
+ {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 4 SVE vector registers"},
{AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY"},
};