11template <
typename TContext>
class MnemonicBuilderTernaryLoadStoreInstrWithShift {
13 using It =
typename TContext::It;
14 using Reg =
typename TContext::Reg;
15 using SReg =
typename TContext::SReg;
17 template <
typename TTgt,
typename TArg0,
typename TArg1>
18 static void Build(
const char *instr_spec, TContext &mctx,
const MnemonicBuilderFlagsSet &bflags,
19 const InstrFlagsSet &iflags,
const TTgt &rt,
const TArg0 &rn,
const TArg1 &rm,
22 static_cast<void>(iflags);
23 static_cast<void>(bflags);
24 mctx.builder.AddString(instr_spec)
25 .AddString(It::GetConditionAsStr(mctx.cpua))
27 .AddString(Reg::GetRegisterName(rt.Get()))
29 .AddString(Reg::GetRegisterName(rn.Get()))
31 .AddString(Reg::GetRegisterName(rm.Get()));
33 if (shift_res.value != 0U) {
34 mctx.builder.AddString(
", LSL #").AddUInt(shift_res.value);
36 mctx.builder.AddChar(
']').Terminate();
43 MnemonicBuilderTernaryLoadStoreInstrWithShift() =
delete;
48 ~MnemonicBuilderTernaryLoadStoreInstrWithShift() =
delete;
54 MnemonicBuilderTernaryLoadStoreInstrWithShift(
55 const MnemonicBuilderTernaryLoadStoreInstrWithShift &r_src) =
default;
61 MnemonicBuilderTernaryLoadStoreInstrWithShift &
62 operator=(
const MnemonicBuilderTernaryLoadStoreInstrWithShift &r_src) =
delete;
68 MnemonicBuilderTernaryLoadStoreInstrWithShift(
69 MnemonicBuilderTernaryLoadStoreInstrWithShift &&r_src) =
delete;
75 MnemonicBuilderTernaryLoadStoreInstrWithShift &
76 operator=(MnemonicBuilderTernaryLoadStoreInstrWithShift &&r_src) =
delete;