--- /dev/null
+#as: -mlibresoc
+#objdump: -dr -Mlibresoc
+
+.*: file format .*
+
+
+Disassembly of section \.text:
+0+ <\.text>:
+.*:\s+(5b e0 00 01|01 00 e0 5b)\s+binlog\s+r31,r0,r0,r0,0
+.*:\s+(58 1f 00 01|01 00 1f 58)\s+binlog\s+r0,r31,r0,r0,0
+.*:\s+(58 00 f8 01|01 f8 00 58)\s+binlog\s+r0,r0,r31,r0,0
+.*:\s+(58 00 07 c1|c1 07 00 58)\s+binlog\s+r0,r0,r0,r31,0
+.*:\s+(58 00 00 21|21 00 00 58)\s+binlog\s+r0,r0,r0,r0,1
+.*:\s+(5b 80 00 09|09 00 80 5b)\s+crfbinlog\s+cr7,cr0,cr0,0
+.*:\s+(58 1c 00 09|09 00 1c 58)\s+crfbinlog\s+cr0,cr7,cr0,0
+.*:\s+(58 00 e0 09|09 e0 00 58)\s+crfbinlog\s+cr0,cr0,cr7,0
+.*:\s+(58 63 00 09|09 00 63 58)\s+crfbinlog\s+cr0,cr0,cr0,15
+.*:\s+(5b e0 00 5d|5d 00 e0 5b)\s+crbinlog\s+4\*cr7\+so,lt,cr0
+.*:\s+(58 1f 00 5d|5d 00 1f 58)\s+crbinlog\s+lt,4\*cr7\+so,cr0
+.*:\s+(58 00 e0 5d|5d e0 00 58)\s+crbinlog\s+lt,lt,cr7
}
static uint64_t
-insert_CRFTLIM (uint64_t insn,
+insert_CRBm (uint64_t insn,
int64_t value,
ppc_cpu_t dialect ATTRIBUTE_UNUSED,
const char **errmsg)
}
static int64_t
-extract_CRFTLIM (uint64_t insn,
+extract_CRBm (uint64_t insn,
ppc_cpu_t dialect ATTRIBUTE_UNUSED,
int *invalid ATTRIBUTE_UNUSED)
{
{ 0xf, 22, NULL, NULL, 0 },
#define LBM2 SVo + 1
+#define BLnh LBM2
{ 0x1, 5, NULL, NULL, 0 },
#define FMM LBM2 + 1
#define CRFTLIF TLIF + 1
{ 0xff, PPC_OPSHIFT_INV, insert_CRFTLIF, extract_CRFTLIF, 0 },
-#define CRFTLIM CRFTLIF + 1
- { 0xf, PPC_OPSHIFT_INV, insert_CRFTLIM, extract_CRFTLIM, 0 },
+#define CRBm CRFTLIF + 1
+ { 0xf, PPC_OPSHIFT_INV, insert_CRBm, extract_CRBm, 0 },
-#define BFB CRFTLIM + 1
+#define BFB CRBm + 1
{ 0x7, 13, NULL, NULL, PPC_OPERAND_CR_REG },
};
| (((uint64_t)(rc)) & 1))
#define MMXFMM_MASK MMXFMM (0x3f, 0x3f, 0xf, 0x1)
-/* An TLI form instructions */
+/* ternlogi instructions */
#define TLI(op, xop, rc) \
(OP (op) \
| ((((uint64_t)(xop)) & 0x3) << 1) \
#define CRFTLI_MASK CRFTLI(0x3f, 0x1f)
#define CRTLI_MASK CRTLI(0x3f, 0x7)
+/* binlog instructions */
+#define CRFBL(op, xop) \
+ (OP (op) \
+ | ((((uint64_t)(xop)) & 0x3f)))
+
+#define CRBL(op, xop) \
+ (OP (op) \
+ | ((((uint64_t)(xop)) & 0x7ff)))
+
+#define CRFBL_MASK CRFBL(0x3f, 0x3f)
+#define CRBL_MASK CRBL(0x3f, 0x7ff)
+
/* The BO encodings used in extended conditional branch mnemonics. */
#define BODNZF (0x0)
#define BODNZFP (0x1)
{"ternlogi", TLI(5,0,0), TLI_MASK, SFFS, PPCVLE, {RT, RA, RB, TLIF}},
{"ternlogi.", TLI(5,0,1), TLI_MASK, SFFS, PPCVLE, {RT, RA, RB, TLIF}},
-{"crfternlogi", CRFTLI(5,1), CRFTLI_MASK, SFFS, PPCVLE, {BF, BFA, BFB, CRFTLIF, CRFTLIM}},
+{"crfternlogi", CRFTLI(5,1), CRFTLI_MASK, SFFS, PPCVLE, {BF, BFA, BFB, CRFTLIF, CRBm}},
{"crternlogi", CRTLI(5,6), CRTLI_MASK, SFFS, PPCVLE, {BT, BA, BB, TLIF}},
{"lxvp", DQXP(6,0), DQXP_MASK, POWER10, PPCVLE, {XTP, DQ, RA0}},
{"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
{"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
+{"binlog", BM2(22,1), BM2_MASK, SFFS, PPCVLE, {RT, RA, RB, RC, BLnh}},
+{"crfbinlog", CRFBL(22,9), CRFBL_MASK, SFFS, PPCVLE, {BF, BFA, BFB, CRBm}},
+{"crbinlog", CRBL(22,93), CRBL_MASK, SFFS, PPCVLE, {BT, BA, BFB}},
+
{"fmvis", DX(22,3), DX_MASK, SFFS, PPCVLE, {FRS, DXD}},
{"fishmv", DX(22,11), DX_MASK, SFFS, PPCVLE, {FRS, DXD}},