13template <
typename TContext>
class MnemonicBuilderBinaryInstrWithImmCarry {
15 using It =
typename TContext::It;
16 using Reg =
typename TContext::Reg;
17 using SReg =
typename TContext::SReg;
19 template <
typename TDest,
typename TArg0>
20 static void Build(
const char *instr_spec, TContext &mctx,
const MnemonicBuilderFlagsSet &bflags,
21 const InstrFlagsSet &iflags,
const TDest &rd,
const TArg0 &rn,
24 const bool is_setflags = (iflags &
static_cast<InstrFlagsSet
>(InstrFlags::kSetFlags)) != 0U;
25 const bool is_reduced_rd =
26 (bflags &
static_cast<MnemonicBuilderFlagsSet
>(MnemonicBuilderFlags::kReduceRd)) != 0U;
27 mctx.builder.AddString(instr_spec)
28 .AddString(is_setflags ==
true ?
"S" :
"")
29 .AddString(It::GetConditionAsStr(mctx.cpua))
32 if ((rd != rn) || (!is_reduced_rd)) {
33 mctx.builder.AddString(Reg::GetRegisterName(rd.Get())).AddString(
", ");
36 mctx.builder.AddString(Reg::GetRegisterName(rn.Get()))
38 .AddUInt(imm_carry.out)
46 MnemonicBuilderBinaryInstrWithImmCarry() =
delete;
51 ~MnemonicBuilderBinaryInstrWithImmCarry() =
delete;
57 MnemonicBuilderBinaryInstrWithImmCarry(
const MnemonicBuilderBinaryInstrWithImmCarry &r_src) =
64 MnemonicBuilderBinaryInstrWithImmCarry &
65 operator=(
const MnemonicBuilderBinaryInstrWithImmCarry &r_src) =
delete;
71 MnemonicBuilderBinaryInstrWithImmCarry(MnemonicBuilderBinaryInstrWithImmCarry &&r_src) =
delete;
77 MnemonicBuilderBinaryInstrWithImmCarry &
78 operator=(MnemonicBuilderBinaryInstrWithImmCarry &&r_src) =
delete;