123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927 |
- From cc2d8c8bed31f441206b53009d5d681132c6e332 Mon Sep 17 00:00:00 2001
- From: "max.ma" <max.ma@starfivetech.com>
- Date: Wed, 29 Sep 2021 02:42:26 -0700
- Subject: [PATCH 01/11] merge from dubhe-pr-06-30 to support b0.94
- ---
- gas/config/tc-riscv.c | 24 +++
- gas/testsuite/gas/riscv/b-ext-64.d | 69 +++++++
- gas/testsuite/gas/riscv/b-ext-64.s | 69 +++++++
- gas/testsuite/gas/riscv/b-ext.d | 39 ++++
- gas/testsuite/gas/riscv/b-ext.s | 39 ++++
- include/opcode/riscv-opc.h | 206 +++++++++++++++++++
- include/opcode/riscv.h | 12 ++
- opcodes/riscv-opc.c | 316 +++++++++++++++++++++++++++++
- 8 files changed, 774 insertions(+)
- diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
- index 70cbc8190f..e5d8070b75 100644
- --- a/gas/config/tc-riscv.c
- +++ b/gas/config/tc-riscv.c
- @@ -343,6 +343,30 @@ riscv_multi_subset_supports (enum riscv_insn_class insn_class)
- case INSN_CLASS_ZBC:
- return riscv_subset_supports ("zbc");
-
- + case INSN_CLASS_ZBE:
- + return riscv_subset_supports ("zbe");
- + case INSN_CLASS_ZBF:
- + return riscv_subset_supports ("zbf");
- + case INSN_CLASS_ZBM:
- + return riscv_subset_supports ("zbm");
- + case INSN_CLASS_ZBP:
- + return riscv_subset_supports ("zbp");
- + case INSN_CLASS_ZBR:
- + return riscv_subset_supports ("zbr");
- + case INSN_CLASS_ZBS:
- + return riscv_subset_supports ("zbs");
- + case INSN_CLASS_ZBT:
- + return riscv_subset_supports ("zbt");
- + case INSN_CLASS_ZBB_OR_ZBP:
- + return (riscv_subset_supports ("zbb") || riscv_subset_supports ("zbp"));
- + case INSN_CLASS_ZBS_OR_ZBE:
- + return (riscv_subset_supports ("zbs") || riscv_subset_supports ("zbe"));
- + case INSN_CLASS_ZBP_OR_ZBM:
- + return (riscv_subset_supports ("zbp") || riscv_subset_supports ("zbm"));
- + case INSN_CLASS_ZBP_OR_ZBE_OR_ZBF:
- + return (riscv_subset_supports ("zbp") || riscv_subset_supports ("zbe") || riscv_subset_supports ("zbf"));
- + case INSN_CLASS_ZBP_OR_ZBE_OR_ZBF_OR_ZBM:
- + return (riscv_subset_supports ("zbp") || riscv_subset_supports ("zbe") || riscv_subset_supports ("zbf") || riscv_subset_supports ("zbm"));
- default:
- as_fatal ("internal: unreachable");
- return false;
- diff --git a/gas/testsuite/gas/riscv/b-ext-64.d b/gas/testsuite/gas/riscv/b-ext-64.d
- index f4a7abf02d..d1b512b9e9 100644
- --- a/gas/testsuite/gas/riscv/b-ext-64.d
- +++ b/gas/testsuite/gas/riscv/b-ext-64.d
- @@ -46,3 +46,72 @@ Disassembly of section .text:
- [ ]+8c:[ ]+08c5853b[ ]+add.uw[ ]+a0,a1,a2
- [ ]+90:[ ]+0805853b[ ]+zext.w[ ]+a0,a1
- [ ]+94:[ ]+0825951b[ ]+slli.uw[ ]+a0,a1,0x2
- +[ ]+98:[ ]+08c5c533[ ]+pack[ ]+a0,a1,a2
- +[ ]+9c:[ ]+48c5c533[ ]+packu[ ]+a0,a1,a2
- +[ ]+a0:[ ]+08c5f533[ ]+packh[ ]+a0,a1,a2
- +[ ]+a4:[ ]+0825c53b[ ]+packw[ ]+a0,a1,0x2
- +[ ]+a8:[ ]+4825c53b[ ]+packuw[ ]+a0,a1,0x2
- +[ ]+ac:[ ]+68c5d533[ ]+grev[ ]+a0,a1,a2
- +[ ]+b0:[ ]+6825d513[ ]+rev2.n[ ]+a0,a1
- +[ ]+b4:[ ]+6825d53b[ ]+grevw[ ]+a0,a1,0x2
- +[ ]+b8:[ ]+6825d51b[ ]+greviw[ ]+a0,a1,0x2
- +[ ]+bc:[ ]+28c5d533[ ]+gorc[ ]+a0,a1,a2
- +[ ]+c0:[ ]+2825d513[ ]+orc2.n[ ]+a0,a1
- +[ ]+c4:[ ]+2825d53b[ ]+gorcw[ ]+a0,a1,0x2
- +[ ]+c8:[ ]+2825d51b[ ]+gorciw[ ]+a0,a1,0x2
- +[ ]+cc:[ ]+08c59533[ ]+shfl[ ]+a0,a1,a2
- +[ ]+d0:[ ]+08259513[ ]+zip2.b[ ]+a0,a1
- +[ ]+d4:[ ]+0825953b[ ]+shflw[ ]+a0,a1,0x2
- +[ ]+d8:[ ]+08c5d533[ ]+unshfl[ ]+a0,a1,a2
- +[ ]+dc:[ ]+0825d513[ ]+unzip2.b[ ]+a0,a1
- +[ ]+e0:[ ]+0825d53b[ ]+unshflw[ ]+a0,a1,0x2
- +[ ]+e4:[ ]+28c5a533[ ]+xperm.n[ ]+a0,a1,a2
- +[ ]+e8:[ ]+28c5c533[ ]+xperm.b[ ]+a0,a1,a2
- +[ ]+ec:[ ]+28c5e533[ ]+xperm.h[ ]+a0,a1,a2
- +[ ]+f0:[ ]+28258533[ ]+xperm.w[ ]+a0,a1,0x2
- +[ ]+f4:[ ]+28c59533[ ]+bset[ ]+a0,a1,a2
- +[ ]+f8:[ ]+48c59533[ ]+bclr[ ]+a0,a1,a2
- +[ ]+fc:[ ]+68c59533[ ]+binv[ ]+a0,a1,a2
- +[ ]+100:[ ]+48c5d533[ ]+bext[ ]+a0,a1,a2
- +[ ]+104:[ ]+48c5e533[ ]+bdecompress[ ]+a0,a1,a2
- +[ ]+108:[ ]+28259513[ ]+bseti[ ]+a0,a1,0x2
- +[ ]+10c:[ ]+48259513[ ]+bclri[ ]+a0,a1,0x2
- +[ ]+110:[ ]+68259513[ ]+binvi[ ]+a0,a1,0x2
- +[ ]+114:[ ]+4825d513[ ]+bexti[ ]+a0,a1,0x2
- +[ ]+118:[ ]+28c5953b[ ]+bsetw[ ]+a0,a1,a2
- +[ ]+11c:[ ]+48c5953b[ ]+bclrw[ ]+a0,a1,a2
- +[ ]+120:[ ]+68c5953b[ ]+binvw[ ]+a0,a1,a2
- +[ ]+124:[ ]+48c5d53b[ ]+bextw[ ]+a0,a1,a2
- +[ ]+128:[ ]+4825e53b[ ]+bdecompressw[ ]+a0,a1,0x2
- +[ ]+12c:[ ]+2825951b[ ]+bsetiw[ ]+a0,a1,0x2
- +[ ]+130:[ ]+4825951b[ ]+bclriw[ ]+a0,a1,0x2
- +[ ]+134:[ ]+6825951b[ ]+binviw[ ]+a0,a1,0x2
- +[ ]+138:[ ]+20c59533[ ]+slo[ ]+a0,a1,a2
- +[ ]+13c:[ ]+20c5d533[ ]+sro[ ]+a0,a1,a2
- +[ ]+140:[ ]+20259513[ ]+sloi[ ]+a0,a1,0x2
- +[ ]+144:[ ]+2025d513[ ]+sroi[ ]+a0,a1,0x2
- +[ ]+148:[ ]+2025953b[ ]+slow[ ]+a0,a1,0x2
- +[ ]+14c:[ ]+2025d53b[ ]+srow[ ]+a0,a1,0x2
- +[ ]+150:[ ]+2025951b[ ]+sloiw[ ]+a0,a1,0x2
- +[ ]+154:[ ]+2025d51b[ ]+sroiw[ ]+a0,a1,0x2
- +[ ]+158:[ ]+48c5f533[ ]+bfp[ ]+a0,a1,a2
- +[ ]+15c:[ ]+4825f53b[ ]+bfpw[ ]+a0,a1,0x2
- +[ ]+160:[ ]+08c5b533[ ]+bmator[ ]+a0,a1,a2
- +[ ]+164:[ ]+48c5b533[ ]+bmatxor[ ]+a0,a1,a2
- +[ ]+168:[ ]+60351513[ ]+bmatflip[ ]+a0,a0
- +[ ]+16c:[ ]+61051513[ ]+crc32.b[ ]+a0,a0
- +[ ]+170:[ ]+61151513[ ]+crc32.h[ ]+a0,a0
- +[ ]+174:[ ]+61251513[ ]+crc32.w[ ]+a0,a0
- +[ ]+178:[ ]+61851513[ ]+crc32c.b[ ]+a0,a0
- +[ ]+17c:[ ]+61951513[ ]+crc32c.h[ ]+a0,a0
- +[ ]+180:[ ]+61a51513[ ]+crc32c.w[ ]+a0,a0
- +[ ]+184:[ ]+61351513[ ]+crc32.d[ ]+a0,a0
- +[ ]+188:[ ]+61b51513[ ]+crc32c.d[ ]+a0,a0
- +[ ]+18c:[ ]+6ec59533[ ]+cmix[ ]+a0,a1,a2,a3
- +[ ]+190:[ ]+6ec5d533[ ]+cmov[ ]+a0,a1,a2,a3
- +[ ]+194:[ ]+6cc59533[ ]+fsl[ ]+a0,a1,a2,a3
- +[ ]+198:[ ]+6cc5d533[ ]+fsr[ ]+a0,a1,a2,a3
- +[ ]+19c:[ ]+6c25d513[ ]+fsri[ ]+a0,a1,0x2,a3
- +[ ]+1a0:[ ]+6c25953b[ ]+fslw[ ]+a0,a1,0x2,a3
- +[ ]+1a4:[ ]+6c25d53b[ ]+fsrw[ ]+a0,a1,0x2,a3
- +[ ]+1a8:[ ]+6c25d51b[ ]+fsriw[ ]+a0,a1,0x2,a3
- \ No newline at end of file
- diff --git a/gas/testsuite/gas/riscv/b-ext-64.s b/gas/testsuite/gas/riscv/b-ext-64.s
- index c3ac377f4b..23b1cbe473 100644
- --- a/gas/testsuite/gas/riscv/b-ext-64.s
- +++ b/gas/testsuite/gas/riscv/b-ext-64.s
- @@ -37,3 +37,72 @@ target:
- add.uw a0, a1, a2
- zext.w a0, a1
- slli.uw a0, a1, 2
- + pack a0, a1, a2
- + packu a0, a1, a2
- + packh a0, a1, a2
- + packw a0, a1, 2
- + packuw a0, a1, 2
- + grev a0, a1, a2
- + grevi a0, a1, 2
- + grevw a0, a1, 2
- + greviw a0, a1, 2
- + gorc a0, a1, a2
- + gorci a0, a1, 2
- + gorcw a0, a1, 2
- + gorciw a0, a1, 2
- + shfl a0, a1, a2
- + shfli a0, a1, 2
- + shflw a0, a1, 2
- + unshfl a0, a1, a2
- + unshfli a0, a1, 2
- + unshflw a0, a1, 2
- + xperm.n a0, a1, a2
- + xperm.b a0, a1, a2
- + xperm.h a0, a1, a2
- + xperm.w a0, a1, 2
- + bset a0, a1, a2
- + bclr a0, a1, a2
- + binv a0, a1, a2
- + bext a0, a1, a2
- + bdecompress a0, a1, a2
- + bseti a0, a1, 2
- + bclri a0, a1, 2
- + binvi a0, a1, 2
- + bexti a0, a1, 2
- + bsetw a0, a1, a2
- + bclrw a0, a1, a2
- + binvw a0, a1, a2
- + bextw a0, a1, a2
- + bdecompressw a0, a1, 2
- + bsetiw a0, a1, 2
- + bclriw a0, a1, 2
- + binviw a0, a1, 2
- + slo a0, a1, a2
- + sro a0, a1, a2
- + sloi a0, a1, 2
- + sroi a0, a1, 2
- + slow a0, a1, 2
- + srow a0, a1, 2
- + sloiw a0, a1, 2
- + sroiw a0, a1, 2
- + bfp a0, a1, a2
- + bfpw a0, a1, 2
- + bmator a0, a1, a2
- + bmatxor a0, a1, a2
- + bmatflip a0, a0
- + crc32.b a0, a0
- + crc32.h a0, a0
- + crc32.w a0, a0
- + crc32c.b a0, a0
- + crc32c.h a0, a0
- + crc32c.w a0, a0
- + crc32.d a0, a0
- + crc32c.d a0, a0
- + cmix a0, a1, a2, a3
- + cmov a0, a1, a2, a3
- + fsl a0, a1, a2, a3
- + fsr a0, a1, a2, a3
- + fsri a0, a1, 2, a3
- + fslw a0, a1, 2, a3
- + fsrw a0, a1, 2, a3
- + fsriw a0, a1, 2, a3
- \ No newline at end of file
- diff --git a/gas/testsuite/gas/riscv/b-ext.d b/gas/testsuite/gas/riscv/b-ext.d
- index 7410796a3b..059a8fa146 100644
- --- a/gas/testsuite/gas/riscv/b-ext.d
- +++ b/gas/testsuite/gas/riscv/b-ext.d
- @@ -33,3 +33,42 @@ Disassembly of section .text:
- [ ]+58:[ ]+0ac59533[ ]+clmul[ ]+a0,a1,a2
- [ ]+5c:[ ]+0ac5b533[ ]+clmulh[ ]+a0,a1,a2
- [ ]+60:[ ]+0ac5a533[ ]+clmulr[ ]+a0,a1,a2
- +[ ]+64:[ ]+08c5c533[ ]+pack[ ]+a0,a1,a2
- +[ ]+68:[ ]+48c5c533[ ]+packu[ ]+a0,a1,a2
- +[ ]+6c:[ ]+08c5f533[ ]+packh[ ]+a0,a1,a2
- +[ ]+70:[ ]+68c5d533[ ]+grev[ ]+a0,a1,a2
- +[ ]+74:[ ]+6825d513[ ]+rev2.n[ ]+a0,a1
- +[ ]+78:[ ]+28c5d533[ ]+gorc[ ]+a0,a1,a2
- +[ ]+7c:[ ]+2825d513[ ]+orc2.n[ ]+a0,a1
- +[ ]+80:[ ]+08c59533[ ]+shfl[ ]+a0,a1,a2
- +[ ]+84:[ ]+08259513[ ]+zip2.b[ ]+a0,a1
- +[ ]+88:[ ]+08c5d533[ ]+unshfl[ ]+a0,a1,a2
- +[ ]+8c:[ ]+0825d513[ ]+unzip2.b[ ]+a0,a1
- +[ ]+90:[ ]+28c5a533[ ]+xperm.n[ ]+a0,a1,a2
- +[ ]+94:[ ]+28c5c533[ ]+xperm.b[ ]+a0,a1,a2
- +[ ]+98:[ ]+28c5e533[ ]+xperm.h[ ]+a0,a1,a2
- +[ ]+9c:[ ]+28c59533[ ]+bset[ ]+a0,a1,a2
- +[ ]+a0:[ ]+48c59533[ ]+bclr[ ]+a0,a1,a2
- +[ ]+a4:[ ]+68c59533[ ]+binv[ ]+a0,a1,a2
- +[ ]+a8:[ ]+48c5d533[ ]+bext[ ]+a0,a1,a2
- +[ ]+ac:[ ]+48c5e533[ ]+bdecompress[ ]+a0,a1,a2
- +[ ]+b0:[ ]+28259513[ ]+bseti[ ]+a0,a1,0x2
- +[ ]+b4:[ ]+48259513[ ]+bclri[ ]+a0,a1,0x2
- +[ ]+b8:[ ]+68259513[ ]+binvi[ ]+a0,a1,0x2
- +[ ]+bc:[ ]+4825d513[ ]+bexti[ ]+a0,a1,0x2
- +[ ]+c0:[ ]+20c59533[ ]+slo[ ]+a0,a1,a2
- +[ ]+c4:[ ]+20c5d533[ ]+sro[ ]+a0,a1,a2
- +[ ]+c8:[ ]+20259513[ ]+sloi[ ]+a0,a1,0x2
- +[ ]+cc:[ ]+2025d513[ ]+sroi[ ]+a0,a1,0x2
- +[ ]+d0:[ ]+48c5f533[ ]+bfp[ ]+a0,a1,a2
- +[ ]+d4:[ ]+61051513[ ]+crc32.b[ ]+a0,a0
- +[ ]+d8:[ ]+61151513[ ]+crc32.h[ ]+a0,a0
- +[ ]+dc:[ ]+61251513[ ]+crc32.w[ ]+a0,a0
- +[ ]+e0:[ ]+61851513[ ]+crc32c.b[ ]+a0,a0
- +[ ]+e4:[ ]+61951513[ ]+crc32c.h[ ]+a0,a0
- +[ ]+e8:[ ]+61a51513[ ]+crc32c.w[ ]+a0,a0
- +[ ]+ec:[ ]+6ec59533[ ]+cmix[ ]+a0,a1,a2,a3
- +[ ]+f0:[ ]+6ec5d533[ ]+cmov[ ]+a0,a1,a2,a3
- +[ ]+f4:[ ]+6cc59533[ ]+fsl[ ]+a0,a1,a2,a3
- +[ ]+f8:[ ]+6cc5d533[ ]+fsr[ ]+a0,a1,a2,a3
- +[ ]+fc:[ ]+6c25d513[ ]+fsri[ ]+a0,a1,0x2,a3
- \ No newline at end of file
- diff --git a/gas/testsuite/gas/riscv/b-ext.s b/gas/testsuite/gas/riscv/b-ext.s
- index 051dafd171..041af79bbd 100644
- --- a/gas/testsuite/gas/riscv/b-ext.s
- +++ b/gas/testsuite/gas/riscv/b-ext.s
- @@ -24,3 +24,42 @@ target:
- clmul a0, a1, a2
- clmulh a0, a1, a2
- clmulr a0, a1, a2
- + pack a0, a1, a2
- + packu a0, a1, a2
- + packh a0, a1, a2
- + grev a0, a1, a2
- + grevi a0, a1, 2
- + gorc a0, a1, a2
- + gorci a0, a1, 2
- + shfl a0, a1, a2
- + shfli a0, a1, 2
- + unshfl a0, a1, a2
- + unshfli a0, a1, 2
- + xperm.n a0, a1, a2
- + xperm.b a0, a1, a2
- + xperm.h a0, a1, a2
- + bset a0, a1, a2
- + bclr a0, a1, a2
- + binv a0, a1, a2
- + bext a0, a1, a2
- + bdecompress a0, a1, a2
- + bseti a0, a1, 2
- + bclri a0, a1, 2
- + binvi a0, a1, 2
- + bexti a0, a1, 2
- + slo a0, a1, a2
- + sro a0, a1, a2
- + sloi a0, a1, 2
- + sroi a0, a1, 2
- + bfp a0, a1, a2
- + crc32.b a0, a0
- + crc32.h a0, a0
- + crc32.w a0, a0
- + crc32c.b a0, a0
- + crc32c.h a0, a0
- + crc32c.w a0, a0
- + cmix a0, a1, a2, a3
- + cmov a0, a1, a2, a3
- + fsl a0, a1, a2, a3
- + fsr a0, a1, a2, a3
- + fsri a0, a1, 2, a3
- \ No newline at end of file
- diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h
- index 9999da6241..1a80dbf87d 100644
- --- a/include/opcode/riscv-opc.h
- +++ b/include/opcode/riscv-opc.h
- @@ -113,6 +113,18 @@
- #define MASK_SRL 0xfe00707f
- #define MATCH_SRA 0x40005033
- #define MASK_SRA 0xfe00707f
- +#define MATCH_SLO 0x20001033
- +#define MASK_SLO 0xfe00707f
- +#define MATCH_SLOI 0x20001013
- +#define MASK_SLOI 0xfc00707f
- +#define MATCH_SLOW 0x2000103b
- +#define MASK_SLOW 0xfe00707f
- +#define MATCH_SRO 0x20005033
- +#define MASK_SRO 0xfe00707f
- +#define MATCH_SROI 0x20005013
- +#define MASK_SROI 0xfc00707f
- +#define MATCH_SROW 0x2000503b
- +#define MASK_SROW 0xfe00707f
- #define MATCH_OR 0x6033
- #define MASK_OR 0xfe00707f
- #define MATCH_AND 0x7033
- @@ -429,6 +441,24 @@
- #define MASK_CTZ 0xfff0707f
- #define MATCH_CPOP 0x60201013
- #define MASK_CPOP 0xfff0707f
- +#define MATCH_BMATFLIP 0x60301013
- +#define MASK_BMATFLIP 0xfff0707f
- +#define MATCH_CRC32_B 0x61001013
- +#define MASK_CRC32_B 0xfff0707f
- +#define MATCH_CRC32_H 0x61101013
- +#define MASK_CRC32_H 0xfff0707f
- +#define MATCH_CRC32_W 0x61201013
- +#define MASK_CRC32_W 0xfff0707f
- +#define MATCH_CRC32_D 0x61301013
- +#define MASK_CRC32_D 0xfff0707f
- +#define MATCH_CRC32C_B 0x61801013
- +#define MASK_CRC32C_B 0xfff0707f
- +#define MATCH_CRC32C_H 0x61901013
- +#define MASK_CRC32C_H 0xfff0707f
- +#define MATCH_CRC32C_W 0x61A01013
- +#define MASK_CRC32C_W 0xfff0707f
- +#define MATCH_CRC32C_D 0x61B01013
- +#define MASK_CRC32C_D 0xfff0707f
- #define MATCH_MIN 0xa004033
- #define MASK_MIN 0xfe00707f
- #define MATCH_MINU 0xa005033
- @@ -437,14 +467,38 @@
- #define MASK_MAX 0xfe00707f
- #define MATCH_MAXU 0xa007033
- #define MASK_MAXU 0xfe00707f
- +#define MATCH_SHFL 0x8001033
- +#define MASK_SHFL 0xfe00707f
- +#define MATCH_SHFLI 0x8001013
- +#define MASK_SHFLI 0xfc00707f
- +#define MATCH_UNSHFL 0x8005033
- +#define MASK_UNSHFL 0xfe00707f
- +#define MATCH_UNSHFLI 0x8005013
- +#define MASK_UNSHFLI 0xfc00707f
- +#define MATCH_BCOMPRESS 0x8006033
- +#define MASK_BCOMPRESS 0xfe00707f
- +#define MATCH_BDECOMPRESS 0x48006033
- +#define MASK_BDECOMPRESS 0xfe00707f
- #define MATCH_SEXT_B 0x60401013
- #define MASK_SEXT_B 0xfff0707f
- #define MATCH_SEXT_H 0x60501013
- #define MASK_SEXT_H 0xfff0707f
- #define MATCH_PACK 0x8004033
- #define MASK_PACK 0xfe00707f
- +#define MATCH_PACKU 0x48004033
- +#define MASK_PACKU 0xfe00707f
- +#define MATCH_BMATOR 0x8003033
- +#define MASK_BMATOR 0xfe00707f
- +#define MATCH_BMATXOR 0x48003033
- +#define MASK_BMATXOR 0xfe00707f
- +#define MATCH_PACKH 0x8007033
- +#define MASK_PACKH 0xfe00707f
- +#define MATCH_BFP 0x48007033
- +#define MASK_BFP 0xfe00707f
- #define MATCH_PACKW 0x800403b
- #define MASK_PACKW 0xfe00707f
- +#define MATCH_PACKUW 0x4800403b
- +#define MASK_PACKUW 0xfe00707f
- #define MATCH_ANDN 0x40007033
- #define MASK_ANDN 0xfe00707f
- #define MATCH_ORN 0x40006033
- @@ -457,10 +511,40 @@
- #define MASK_ROR 0xfe00707f
- #define MATCH_RORI 0x60005013
- #define MASK_RORI 0xfc00707f
- +#define MATCH_BCLR 0x48001033
- +#define MASK_BCLR 0xfe00707f
- +#define MATCH_BCLRI 0x48001013
- +#define MASK_BCLRI 0xfc00707f
- +#define MATCH_BSET 0x28001033
- +#define MASK_BSET 0xfe00707f
- +#define MATCH_BSETI 0x28001013
- +#define MASK_BSETI 0xfc00707f
- +#define MATCH_BINV 0x68001033
- +#define MASK_BINV 0xfe00707f
- +#define MATCH_BINVI 0x68001013
- +#define MASK_BINVI 0xfc00707f
- +#define MATCH_BEXT 0x48005033
- +#define MASK_BEXT 0xfe00707f
- +#define MATCH_BEXTI 0x48005013
- +#define MASK_BEXTI 0xfc00707f
- +#define MATCH_GREV 0x68005033
- +#define MASK_GREV 0xfe00707f
- #define MATCH_GREVI 0x68005013
- #define MASK_GREVI 0xfc00707f
- +#define MATCH_GORC 0x28005033
- +#define MASK_GORC 0xfe00707f
- #define MATCH_GORCI 0x28005013
- #define MASK_GORCI 0xfc00707f
- +#define MATCH_CMIX 0x6001033
- +#define MASK_CMIX 0x600707f
- +#define MATCH_CMOV 0x6005033
- +#define MASK_CMOV 0x600707f
- +#define MATCH_FSL 0x4001033
- +#define MASK_FSL 0x600707f
- +#define MATCH_FSR 0x4005033
- +#define MASK_FSR 0x600707f
- +#define MATCH_FSRI 0x4005013
- +#define MASK_FSRI 0x400707f
- #define MATCH_CLZW 0x6000101b
- #define MASK_CLZW 0xfff0707f
- #define MATCH_CTZW 0x6010101b
- @@ -485,6 +569,56 @@
- #define MASK_SH2ADD_UW 0xfe00707f
- #define MATCH_SH3ADD_UW 0x2000603b
- #define MASK_SH3ADD_UW 0xfe00707f
- +#define MATCH_BCLRW 0x4800103b
- +#define MASK_BCLRW 0xfe00707f
- +#define MATCH_BSETW 0x2800103b
- +#define MASK_BSETW 0xfe00707f
- +#define MATCH_BINVW 0x6800103b
- +#define MASK_BINVW 0xfe00707f
- +#define MATCH_BEXTW 0x4800503b
- +#define MASK_BEXTW 0xfe00707f
- +#define MATCH_GORCW 0x2800503b
- +#define MASK_GORCW 0xfe00707f
- +#define MATCH_GREVW 0x6800503b
- +#define MASK_GREVW 0xfe00707f
- +#define MATCH_SLOIW 0x2000101b
- +#define MASK_SLOIW 0xfe00707f
- +#define MATCH_SROIW 0x2000501b
- +#define MASK_SROIW 0xfe00707f
- +#define MATCH_BCLRIW 0x4800101b
- +#define MASK_BCLRIW 0xfe00707f
- +#define MATCH_BSETIW 0x2800101b
- +#define MASK_BSETIW 0xfe00707f
- +#define MATCH_BINVIW 0x6800101b
- +#define MASK_BINVIW 0xfe00707f
- +#define MATCH_GORCIW 0x2800501b
- +#define MASK_GORCIW 0xfe00707f
- +#define MATCH_GREVIW 0x6800501b
- +#define MASK_GREVIW 0xfe00707f
- +#define MATCH_FSLW 0x400103b
- +#define MASK_FSLW 0x600707f
- +#define MATCH_FSRW 0x400503B
- +#define MASK_FSRW 0x600707f
- +#define MATCH_FSRIW 0x400501B
- +#define MASK_FSRIW 0x600707f
- +#define MATCH_SHFLW 0x800103b
- +#define MASK_SHFLW 0xfe00707f
- +#define MATCH_UNSHFLW 0x800503b
- +#define MASK_UNSHFLW 0xfe00707f
- +#define MATCH_BCOMPRESSW 0x800603B
- +#define MASK_BCOMPRESSW 0xfe00707f
- +#define MATCH_BDECOMPRESSW 0x4800603b
- +#define MASK_BDECOMPRESSW 0xfe00707f
- +#define MATCH_BFPW 0x4800703b
- +#define MASK_BFPW 0xfe00707f
- +#define MATCH_XPERM_N 0x28002033
- +#define MASK_XPERM_N 0xfe00707f
- +#define MATCH_XPERM_B 0x28004033
- +#define MASK_XPERM_B 0xfe00707f
- +#define MATCH_XPERM_H 0x28006033
- +#define MASK_XPERM_H 0xfe00707f
- +#define MATCH_XPERM_W 0x28000033
- +#define MASK_XPERM_W 0xfe00707f
- #define MATCH_ADD_UW 0x800003b
- #define MASK_ADD_UW 0xfe00707f
- #define MATCH_SLLI_UW 0x800101b
- @@ -1102,6 +1236,78 @@ DECLARE_INSN(slli_uw, MATCH_SLLI_UW, MASK_SLLI_UW)
- DECLARE_INSN(clmul, MATCH_CLMUL, MASK_CLMUL)
- DECLARE_INSN(clmulh, MATCH_CLMULH, MASK_CLMULH)
- DECLARE_INSN(clmulr, MATCH_CLMULR, MASK_CLMULR)
- +DECLARE_INSN(pack, MATCH_PACK, MASK_PACK)
- +DECLARE_INSN(packu, MATCH_PACKU, MASK_PACKU)
- +DECLARE_INSN(packh, MATCH_PACKH, MASK_PACKH)
- +DECLARE_INSN(packw, MATCH_PACKW, MASK_PACKW)
- +DECLARE_INSN(packuw, MATCH_PACKUW, MASK_PACKUW)
- +DECLARE_INSN(grev, MATCH_GREV, MASK_GREV)
- +DECLARE_INSN(grevi, MATCH_GREVI, MASK_GREVI)
- +DECLARE_INSN(grevw, MATCH_GREVW, MASK_GREVW)
- +DECLARE_INSN(greviw, MATCH_GREVIW, MASK_GREVIW)
- +DECLARE_INSN(gorc, MATCH_GORC, MASK_GORC)
- +DECLARE_INSN(gorci, MATCH_GORCI, MASK_GORCI)
- +DECLARE_INSN(gorcw, MATCH_GORCW, MASK_GORCW)
- +DECLARE_INSN(gorciw, MATCH_GORCIW, MASK_GORCIW)
- +DECLARE_INSN(shfl, MATCH_SHFL, MASK_SHFL)
- +DECLARE_INSN(shfli, MATCH_SHFLI, MASK_SHFLI)
- +DECLARE_INSN(shflw, MATCH_SHFLW, MASK_SHFLW)
- +DECLARE_INSN(unshfl, MATCH_UNSHFL, MASK_UNSHFL)
- +DECLARE_INSN(unshfli, MATCH_UNSHFLI, MASK_UNSHFLI)
- +DECLARE_INSN(unshflw, MATCH_UNSHFLW, MASK_UNSHFLW)
- +DECLARE_INSN(xperm_n, MATCH_XPERM_N, MASK_XPERM_N)
- +DECLARE_INSN(xperm_b, MATCH_XPERM_B, MASK_XPERM_B)
- +DECLARE_INSN(xperm_h, MATCH_XPERM_H, MASK_XPERM_H)
- +DECLARE_INSN(xperm_w, MATCH_XPERM_W, MASK_XPERM_W)
- +DECLARE_INSN(bset, MATCH_BSET, MASK_BSET)
- +DECLARE_INSN(bclr, MATCH_BCLR, MASK_BCLR)
- +DECLARE_INSN(binv, MATCH_BINV, MASK_BINV)
- +DECLARE_INSN(bext, MATCH_BEXT, MASK_BEXT)
- +DECLARE_INSN(bcompress, MATCH_BCOMPRESS, MASK_BCOMPRESS)
- +DECLARE_INSN(bdecompress, MATCH_BDECOMPRESS, MASK_BDECOMPRESS)
- +DECLARE_INSN(bseti, MATCH_BSETI, MASK_BSETI)
- +DECLARE_INSN(bclri, MATCH_BCLRI, MASK_BCLRI)
- +DECLARE_INSN(binvi, MATCH_BINVI, MASK_BINVI)
- +DECLARE_INSN(bexti, MATCH_BEXTI, MASK_BEXTI)
- +DECLARE_INSN(bsetw, MATCH_BSETW, MASK_BSETW)
- +DECLARE_INSN(bclrw, MATCH_BCLRW, MASK_BCLRW)
- +DECLARE_INSN(binvw, MATCH_BINVW, MASK_BINVW)
- +DECLARE_INSN(bextw, MATCH_BEXTW, MASK_BEXTW)
- +DECLARE_INSN(bcompressw, MATCH_BCOMPRESSW, MASK_BCOMPRESSW)
- +DECLARE_INSN(bdecompressw, MATCH_BDECOMPRESSW, MASK_BDECOMPRESSW)
- +DECLARE_INSN(bsetiw, MATCH_BSETIW, MASK_BSETIW)
- +DECLARE_INSN(bclriw, MATCH_BCLRIW, MASK_BCLRIW)
- +DECLARE_INSN(binviw, MATCH_BINVIW, MASK_BINVIW)
- +DECLARE_INSN(slo, MATCH_SLO, MASK_SLO)
- +DECLARE_INSN(sro, MATCH_SRO, MASK_SRO)
- +DECLARE_INSN(sloi, MATCH_SLOI, MASK_SLOI)
- +DECLARE_INSN(sroi, MATCH_SROI, MASK_SROI)
- +DECLARE_INSN(slow, MATCH_SLOW, MASK_SLOW)
- +DECLARE_INSN(srow, MATCH_SROW, MASK_SROW)
- +DECLARE_INSN(sloiw, MATCH_SLOIW, MASK_SLOIW)
- +DECLARE_INSN(sroiw, MATCH_SROIW, MASK_SROIW)
- +DECLARE_INSN(bfp, MATCH_BFP, MASK_BFP)
- +DECLARE_INSN(bfpw, MATCH_BFPW, MASK_BFPW)
- +DECLARE_INSN(bmator, MATCH_BMATOR, MASK_BMATOR)
- +DECLARE_INSN(bmatxor, MATCH_BMATXOR, MASK_BMATXOR)
- +DECLARE_INSN(bmatflip, MATCH_BMATFLIP, MASK_BMATFLIP)
- +DECLARE_INSN(crc32_b, MATCH_CRC32_B, MASK_CRC32_B)
- +DECLARE_INSN(crc32_h, MATCH_CRC32_H, MASK_CRC32_H)
- +DECLARE_INSN(crc32_w, MATCH_CRC32_W, MASK_CRC32_W)
- +DECLARE_INSN(crc32c_b, MATCH_CRC32C_B, MASK_CRC32C_B)
- +DECLARE_INSN(crc32c_h, MATCH_CRC32C_H, MASK_CRC32C_H)
- +DECLARE_INSN(crc32c_w, MATCH_CRC32C_W, MASK_CRC32C_W)
- +DECLARE_INSN(crc32_d, MATCH_CRC32_D, MASK_CRC32_D)
- +DECLARE_INSN(crc32c_d, MATCH_CRC32C_D, MASK_CRC32C_D)
- +DECLARE_INSN(cmix, MATCH_CMIX, MASK_CMIX)
- +DECLARE_INSN(cmov, MATCH_CMOV, MASK_CMOV)
- +DECLARE_INSN(fsl, MATCH_FSL, MASK_FSL)
- +DECLARE_INSN(fsr, MATCH_FSR, MASK_FSR)
- +DECLARE_INSN(fsri, MATCH_FSRI, MASK_FSRI)
- +DECLARE_INSN(fslw, MATCH_FSLW, MASK_FSLW)
- +DECLARE_INSN(fsrw, MATCH_FSRW, MASK_FSRW)
- +DECLARE_INSN(fsriw, MATCH_FSRIW, MASK_FSRIW)
- +DECLARE_INSN(flh, MATCH_FLH, MASK_FLH)
- DECLARE_INSN(flw, MATCH_FLW, MASK_FLW)
- DECLARE_INSN(fld, MATCH_FLD, MASK_FLD)
- DECLARE_INSN(flq, MATCH_FLQ, MASK_FLQ)
- diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h
- index fdf3df4f5c..ae8c6bd33f 100644
- --- a/include/opcode/riscv.h
- +++ b/include/opcode/riscv.h
- @@ -319,6 +319,18 @@ enum riscv_insn_class
- INSN_CLASS_ZBA,
- INSN_CLASS_ZBB,
- INSN_CLASS_ZBC,
- + INSN_CLASS_ZBP,
- + INSN_CLASS_ZBB_OR_ZBP,
- + INSN_CLASS_ZBS,
- + INSN_CLASS_ZBE,
- + INSN_CLASS_ZBS_OR_ZBE,
- + INSN_CLASS_ZBF,
- + INSN_CLASS_ZBM,
- + INSN_CLASS_ZBP_OR_ZBM,
- + INSN_CLASS_ZBR,
- + INSN_CLASS_ZBT,
- + INSN_CLASS_ZBP_OR_ZBE_OR_ZBF,
- + INSN_CLASS_ZBP_OR_ZBE_OR_ZBF_OR_ZBM,
- };
-
- /* This structure holds information for a particular instruction. */
- diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c
- index f55a01b071..3d9240262c 100644
- --- a/opcodes/riscv-opc.c
- +++ b/opcodes/riscv-opc.c
- @@ -24,6 +24,130 @@
- #include "opcode/riscv.h"
- #include <stdio.h>
-
- +#define MASK_SHAMT (OP_MASK_SHAMT << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_32 (0b11111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_64 (0b111111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_P_32 (0b00001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_P_64 (0b000001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_N_32 (0b00011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_N_64 (0b000011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_B_32 (0b00111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_B_64 (0b000111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_H_32 (0b01111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_H_64 (0b001111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV_W_64 (0b011111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_32 (0b11110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_64 (0b111110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_N_32 (0b00010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_N_64 (0b000010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_B_32 (0b00110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_B_64 (0b000110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_H_32 (0b01110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_H_64 (0b001110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV2_W_64 (0b011110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_32 (0b11100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_64 (0b111100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_B_32 (0b00100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_B_64 (0b000100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_H_32 (0b01100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_H_64 (0b001100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV4_W_64 (0b011100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV8_32 (0b11000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV8_64 (0b111000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV8_H_32 (0b01000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV8_H_64 (0b001000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV8_W_64 (0b011000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV16_32 (0b10000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV16_64 (0b110000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV16_W_64 (0b010000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_REV32_64 (0b100000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_32 (0b1111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_64 (0b11111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_N_32 (0b0001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_N_64 (0b00001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_B_32 (0b0011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_B_64 (0b00011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_H_32 (0b0111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_H_64 (0b00111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP_W_64 (0b01111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_32 (0b1110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_64 (0b11110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_B_32 (0b0010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_B_64 (0b00010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_H_32 (0b0110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_H_64 (0b00110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP2_W_64 (0b01110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP4_32 (0b1100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP4_64 (0b11100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP4_H_32 (0b0100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP4_H_64 (0b00100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP4_W_64 (0b01100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP8_32 (0b1000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP8_64 (0b11000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP8_W_64 (0b01000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ZIP16_64 (0b10000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_32 (0b1111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_64 (0b11111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_N_32 (0b0001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_N_64 (0b00001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_B_32 (0b0011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_B_64 (0b00011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_H_32 (0b0111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_H_64 (0b00111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP_W_64 (0b01111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_32 (0b1110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_64 (0b11110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_B_32 (0b0010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_B_64 (0b00010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_H_32 (0b0110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_H_64 (0b00110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP2_W_64 (0b01110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP4_32 (0b1100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP4_64 (0b11100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP4_H_32 (0b0100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP4_H_64 (0b00100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP4_W_64 (0b01100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP8_32 (0b1000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP8_64 (0b11000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP8_W_64 (0b01000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_UNZIP16_64 (0b10000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_32 (0b11111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_64 (0b111111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_P_32 (0b00001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_P_64 (0b000001 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_N_32 (0b00011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_N_64 (0b000011 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_B_32 (0b00111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_B_64 (0b000111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_H_32 (0b01111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_H_64 (0b001111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC_W_64 (0b011111 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_32 (0b11110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_64 (0b111110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_N_32 (0b00010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_N_64 (0b000010 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_B_32 (0b00110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_B_64 (0b000110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_H_32 (0b01110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_H_64 (0b001110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC2_W_64 (0b011110 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_32 (0b11100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_64 (0b111100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_B_32 (0b00100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_B_64 (0b000100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_H_32 (0b01100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_H_64 (0b001100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC4_W_64 (0b011100 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC8_32 (0b11000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC8_64 (0b111000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC8_H_32 (0b01000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC8_H_64 (0b001000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC8_W_64 (0b011000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC16_32 (0b10000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC16_64 (0b110000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC16_W_64 (0b010000 << OP_SH_SHAMT)
- +#define MATCH_SHAMT_ORC32_64 (0b100000 << OP_SH_SHAMT)
- +
- /* Register names used by gas and objdump. */
-
- const char * const riscv_gpr_names_numeric[NGPR] =
- @@ -827,6 +951,198 @@ const struct riscv_opcode riscv_opcodes[] =
- {"clmulh", 0, INSN_CLASS_ZBC, "d,s,t", MATCH_CLMULH, MASK_CLMULH, match_opcode, 0 },
- {"clmulr", 0, INSN_CLASS_ZBC, "d,s,t", MATCH_CLMULR, MASK_CLMULR, match_opcode, 0 },
-
- +/* ZBS instructions */
- +{"bclr", 0, INSN_CLASS_ZBS, "d,s,t", MATCH_BCLR, MASK_BCLR, match_opcode, 0 },
- +{"bclri", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_BCLRI, MASK_BCLRI, match_opcode, 0 },
- +{"bext", 0, INSN_CLASS_ZBS_OR_ZBE, "d,s,t", MATCH_BEXT, MASK_BEXT, match_opcode, 0 },
- +{"bexti", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_BEXTI, MASK_BEXTI, match_opcode, 0 },
- +{"binv", 0, INSN_CLASS_ZBS, "d,s,t", MATCH_BINV, MASK_BINV, match_opcode, 0 },
- +{"binvi", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_BINVI, MASK_BINVI, match_opcode, 0 },
- +{"bset", 0, INSN_CLASS_ZBS, "d,s,t", MATCH_BSET, MASK_BSET, match_opcode, 0 },
- +{"bseti", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_BSETI, MASK_BSETI, match_opcode, 0 },
- +
- +/* B instructions excluded from spec1.0 */
- +{"rev", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.p", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_P_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.p", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_P_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_N_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_N_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_N_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_N_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV2_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_B_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_B_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV4_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev8.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_H_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev8.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_H_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV8_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev16", 32, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_32, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev16", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev16.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV16_W_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"rev32", 64, INSN_CLASS_ZBP, "d,s", MATCH_GREVI|MATCH_SHAMT_REV32_64, MASK_GREVI|MASK_SHAMT, match_opcode, 0 },
- +{"zip", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_N_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_N_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_B_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_B_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_B_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_B_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP2_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip4", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip4", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_H_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_H_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP4_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip8", 32, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_32, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip8", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP8_W_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"zip16", 64, INSN_CLASS_ZBP, "d,s", MATCH_SHFLI|MATCH_SHAMT_ZIP16_64, MASK_SHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_N_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_N_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_B_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_B_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_B_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_B_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP2_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip4", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip4", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_H_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_H_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP4_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip8", 32, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_32, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip8", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP8_W_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"unzip16", 64, INSN_CLASS_ZBP, "d,s", MATCH_UNSHFLI|MATCH_SHAMT_UNZIP16_64, MASK_UNSHFLI|MASK_SHAMT, match_opcode, 0 },
- +{"orc", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.p", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_P_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.p", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_P_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_N_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_N_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.n", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_N_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.n", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_N_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_B_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_B_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc2.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC2_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4.b", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_B_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4.b", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_B_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc4.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC4_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc8", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc8", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc8.h", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_H_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc8.h", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_H_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc8.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC8_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc16", 32, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_32, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc16", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc16.w", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC16_W_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"orc32", 64, INSN_CLASS_ZBP, "d,s", MATCH_GORCI|MATCH_SHAMT_ORC32_64, MASK_GORCI|MASK_SHAMT, match_opcode, 0 },
- +{"pack", 0, INSN_CLASS_ZBP_OR_ZBE_OR_ZBF_OR_ZBM, "d,s,t", MATCH_PACK, MASK_PACK, match_opcode, 0 },
- +{"packu", 0, INSN_CLASS_ZBP_OR_ZBM, "d,s,t", MATCH_PACKU, MASK_PACKU, match_opcode, 0 },
- +{"packh", 0, INSN_CLASS_ZBP_OR_ZBE_OR_ZBF, "d,s,t", MATCH_PACKH, MASK_PACKH, match_opcode, 0 },
- +{"packw", 64, INSN_CLASS_ZBP_OR_ZBE_OR_ZBF, "d,s,<", MATCH_PACKW, MASK_PACKW, match_opcode, 0 },
- +{"packuw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_PACKUW, MASK_PACKUW, match_opcode, 0 },
- +{"grev", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_GREV, MASK_GREV, match_opcode, 0 },
- +{"grevi", 0, INSN_CLASS_ZBP, "d,s,>", MATCH_GREVI, MASK_GREVI, match_opcode, 0 },
- +{"grevw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_GREVW, MASK_GREVW, match_opcode, 0 },
- +{"greviw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_GREVIW, MASK_GREVIW, match_opcode, 0 },
- +{"gorc", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_GORC, MASK_GORC, match_opcode, 0 },
- +{"gorci", 0, INSN_CLASS_ZBP, "d,s,>", MATCH_GORCI, MASK_GORCI, match_opcode, 0 },
- +{"gorcw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_GORCW, MASK_GORCW, match_opcode, 0 },
- +{"gorciw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_GORCIW, MASK_GORCIW, match_opcode, 0 },
- +{"shfl", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_SHFL, MASK_SHFL, match_opcode, 0 },
- +{"shfli", 0, INSN_CLASS_ZBP, "d,s,>", MATCH_SHFLI, MASK_SHFLI, match_opcode, 0 },
- +{"shflw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_SHFLW, MASK_SHFLW, match_opcode, 0 },
- +{"unshfl", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_UNSHFL, MASK_UNSHFL, match_opcode, 0 },
- +{"unshfli", 0, INSN_CLASS_ZBP, "d,s,>", MATCH_UNSHFLI, MASK_UNSHFLI, match_opcode, 0 },
- +{"unshflw", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_UNSHFLW, MASK_UNSHFLW, match_opcode, 0 },
- +{"xperm.n", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_XPERM_N, MASK_XPERM_N, match_opcode, 0 },
- +{"xperm.b", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_XPERM_B, MASK_XPERM_B, match_opcode, 0 },
- +{"xperm.h", 0, INSN_CLASS_ZBP, "d,s,t", MATCH_XPERM_H, MASK_XPERM_H, match_opcode, 0 },
- +{"xperm.w", 64, INSN_CLASS_ZBP, "d,s,<", MATCH_XPERM_W, MASK_XPERM_W, match_opcode, 0 },
- +{"bcompress",0, INSN_CLASS_ZBE, "d,s,t", MATCH_BCOMPRESS, MASK_BCOMPRESS, match_opcode, 0 },
- +{"bdecompress",0, INSN_CLASS_ZBE, "d,s,t", MATCH_BDECOMPRESS, MASK_BDECOMPRESS, match_opcode, 0 },
- +{"bsetw", 64, INSN_CLASS_ZBS, "d,s,t", MATCH_BSETW, MASK_BSETW, match_opcode, 0 },
- +{"bclrw", 64, INSN_CLASS_ZBS, "d,s,t", MATCH_BCLRW, MASK_BCLRW, match_opcode, 0 },
- +{"binvw", 64, INSN_CLASS_ZBS, "d,s,t", MATCH_BINVW, MASK_BINVW, match_opcode, 0 },
- +{"bextw", 64, INSN_CLASS_ZBS_OR_ZBE, "d,s,t", MATCH_BEXTW, MASK_BEXTW, match_opcode, 0 },
- +{"bcompressw",64, INSN_CLASS_ZBE, "d,s,<", MATCH_BCOMPRESSW, MASK_BCOMPRESSW, match_opcode, 0 },
- +{"bdecompressw",64, INSN_CLASS_ZBE, "d,s,<", MATCH_BDECOMPRESSW, MASK_BDECOMPRESSW, match_opcode, 0 },
- +{"bsetiw", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_BSETIW, MASK_BSETIW, match_opcode, 0 },
- +{"bclriw", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_BCLRIW, MASK_BCLRIW, match_opcode, 0 },
- +{"binviw", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_BINVIW, MASK_BINVIW, match_opcode, 0 },
- +{"slo", 0, INSN_CLASS_ZBS, "d,s,t", MATCH_SLO, MASK_SLO, match_opcode, 0 },
- +{"sro", 0, INSN_CLASS_ZBS, "d,s,t", MATCH_SRO, MASK_SRO, match_opcode, 0 },
- +{"sloi", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_SLOI, MASK_SLOI, match_opcode, 0 },
- +{"sroi", 0, INSN_CLASS_ZBS, "d,s,>", MATCH_SROI, MASK_SROI, match_opcode, 0 },
- +{"slow", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_SLOW, MASK_SLOW, match_opcode, 0 },
- +{"srow", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_SROW, MASK_SROW, match_opcode, 0 },
- +{"sloiw", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_SLOIW, MASK_SLOIW, match_opcode, 0 },
- +{"sroiw", 64, INSN_CLASS_ZBS, "d,s,<", MATCH_SROIW, MASK_SROIW, match_opcode, 0 },
- +{"bfp", 0, INSN_CLASS_ZBF, "d,s,t", MATCH_BFP, MASK_BFP, match_opcode, 0 },
- +{"bfpw", 64, INSN_CLASS_ZBF, "d,s,<", MATCH_BFPW, MASK_BFPW, match_opcode, 0 },
- +{"bmator", 64, INSN_CLASS_ZBM, "d,s,t", MATCH_BMATOR, MASK_BMATOR, match_opcode, 0 },
- +{"bmatxor", 64, INSN_CLASS_ZBM, "d,s,t", MATCH_BMATXOR, MASK_BMATXOR, match_opcode, 0 },
- +{"bmatflip", 64, INSN_CLASS_ZBM, "d,s", MATCH_BMATFLIP, MASK_BMATFLIP, match_opcode, 0 },
- +{"crc32.b", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32_B, MASK_CRC32_B, match_opcode, 0 },
- +{"crc32.h", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32_H, MASK_CRC32_H, match_opcode, 0 },
- +{"crc32.w", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32_W, MASK_CRC32_W, match_opcode, 0 },
- +{"crc32c.b", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32C_B, MASK_CRC32C_B, match_opcode, 0 },
- +{"crc32c.h", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32C_H, MASK_CRC32C_H, match_opcode, 0 },
- +{"crc32c.w", 0, INSN_CLASS_ZBR, "d,s", MATCH_CRC32C_W, MASK_CRC32C_W, match_opcode, 0 },
- +{"crc32.d", 64, INSN_CLASS_ZBR, "d,s", MATCH_CRC32_D, MASK_CRC32_D, match_opcode, 0 },
- +{"crc32c.d", 64, INSN_CLASS_ZBR, "d,s", MATCH_CRC32C_D, MASK_CRC32C_D, match_opcode, 0 },
- +{"cmix", 0, INSN_CLASS_ZBT, "d,s,t,r", MATCH_CMIX, MASK_CMIX, match_opcode, 0 },
- +{"cmov", 0, INSN_CLASS_ZBT, "d,s,t,r", MATCH_CMOV, MASK_CMOV, match_opcode, 0 },
- +{"fsl", 0, INSN_CLASS_ZBT, "d,s,t,r", MATCH_FSL, MASK_FSL, match_opcode, 0 },
- +{"fsr", 0, INSN_CLASS_ZBT, "d,s,t,r", MATCH_FSR, MASK_FSR, match_opcode, 0 },
- +{"fsri", 0, INSN_CLASS_ZBT, "d,s,>,r", MATCH_FSRI, MASK_FSRI, match_opcode, 0 },
- +{"fslw", 64, INSN_CLASS_ZBT, "d,s,<,r", MATCH_FSLW, MASK_FSLW, match_opcode, 0 },
- +{"fsrw", 64, INSN_CLASS_ZBT, "d,s,<,r", MATCH_FSRW, MASK_FSRW, match_opcode, 0 },
- +{"fsriw", 64, INSN_CLASS_ZBT, "d,s,<,r", MATCH_FSRIW, MASK_FSRIW, match_opcode, 0 },
-
- /* Terminate the list. */
- {0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}
- --
- 2.33.1
|