* u -> 1st half of bl[x] target
* v -> 2nd half ob bl[x] target
* R -> register list
+ * s -> single precision floating point register
+ * S -> double precision floating point register
*
* [!] escape. To insert "!", use "!!"
*/
ENCODING_MAP(THUMB2_VLDRS, 0xed900a00,
SFP, 22, 12, BITBLT, 19, 16, BITBLT, 7, 0,
IS_TERTIARY_OP,
- "vldr", "s!0d, [r!1d, #!2E]", 2),
+ "vldr", "!0s, [r!1d, #!2E]", 2),
ENCODING_MAP(THUMB2_VLDRD, 0xed900b00,
DFP, 22, 12, BITBLT, 19, 16, BITBLT, 7, 0,
IS_TERTIARY_OP,
- "vldr", "d!0d, [r!1d, #!2E]", 2),
+ "vldr", "!0S, [r!1d, #!2E]", 2),
ENCODING_MAP(THUMB2_VMULS, 0xee200a00,
SFP, 22, 12, SFP, 7, 16, SFP, 5, 0,
IS_TERTIARY_OP,
- "vmuls", "s!0d, s!1d, s!2d", 2),
+ "vmuls", "!0s, !1s, !2s", 2),
ENCODING_MAP(THUMB2_VMULD, 0xee200b00,
DFP, 22, 12, DFP, 7, 16, DFP, 5, 0,
IS_TERTIARY_OP,
- "vmuld", "d!0d, d!1d, d!2d", 2),
+ "vmuld", "!0S, !1S, !2S", 2),
ENCODING_MAP(THUMB2_VSTRS, 0xed800a00,
SFP, 22, 12, BITBLT, 19, 16, BITBLT, 7, 0,
IS_TERTIARY_OP,
- "vstr", "s!0d, [r!1d, #!2E]", 2),
+ "vstr", "!0s, [r!1d, #!2E]", 2),
ENCODING_MAP(THUMB2_VSTRD, 0xed800b00,
DFP, 22, 12, BITBLT, 19, 16, BITBLT, 7, 0,
IS_TERTIARY_OP,
- "vstr", "d!0d, [r!1d, #!2E]", 2),
+ "vstr", "!0S, [r!1d, #!2E]", 2),
ENCODING_MAP(THUMB2_VSUBS, 0xee300a40,
SFP, 22, 12, SFP, 7, 16, SFP, 5, 0,
IS_TERTIARY_OP,
- "vsub", "s!0d, s!1d, s!2d", 2),
+ "vsub", "!0s, !1s, !2s", 2),
ENCODING_MAP(THUMB2_VSUBD, 0xee300b40,
DFP, 22, 12, DFP, 7, 16, DFP, 5, 0,
IS_TERTIARY_OP,
- "vsub", "d!0d, s!1d, s!2d", 2),
+ "vsub", "!0S, !1S, !2S", 2),
ENCODING_MAP(THUMB2_VADDS, 0xee300a00,
SFP, 22, 12, SFP, 7, 16, SFP, 5, 0,
IS_TERTIARY_OP,
- "vadd", "s!0d, s!1d, s!2d", 2),
+ "vadd", "!0s, !1s, !2s", 2),
ENCODING_MAP(THUMB2_VADDD, 0xee300b00,
DFP, 22, 12, DFP, 7, 16, DFP, 5, 0,
IS_TERTIARY_OP,
- "vadd", "d!0d, s!1d, s!2d", 2),
+ "vadd", "!0S, !1S, !2S", 2),
ENCODING_MAP(THUMB2_VDIVS, 0xee800a00,
SFP, 22, 12, SFP, 7, 16, SFP, 5, 0,
IS_TERTIARY_OP,
- "vdivs", "s!0d, s!1d, s!2d", 2),
+ "vdivs", "!0s, !1s, !2s", 2),
ENCODING_MAP(THUMB2_VDIVD, 0xee800b00,
DFP, 22, 12, DFP, 7, 16, DFP, 5, 0,
IS_TERTIARY_OP,
- "vdivs", "s!0d, s!1d, s!2d", 2),
+ "vdivs", "!0S, !1S, !2S", 2),
ENCODING_MAP(THUMB2_VCVTIF, 0xeeb80ac0,
SFP, 22, 12, SFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.f32", "s!0d, s!1d", 2),
+ "vcvt.f32", "!0s, !1s", 2),
ENCODING_MAP(THUMB2_VCVTID, 0xeeb80bc0,
DFP, 22, 12, SFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.f64", "s!0d, s!1d", 2),
+ "vcvt.f64", "!0S, !1s", 2),
ENCODING_MAP(THUMB2_VCVTFI, 0xeebd0ac0,
SFP, 22, 12, SFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.s32.f32", "s!0d, s!1d", 2),
+ "vcvt.s32.f32 ", "!0s, !1s", 2),
ENCODING_MAP(THUMB2_VCVTDI, 0xeebd0bc0,
SFP, 22, 12, DFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.s32.f64", "s!0d, s!1d", 2),
+ "vcvt.s32.f64 ", "!0s, !1S", 2),
ENCODING_MAP(THUMB2_VCVTFD, 0xeeb70ac0,
DFP, 22, 12, SFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.f64.f32", "s!0d, s!1d", 2),
+ "vcvt.f64.f32 ", "!0S, !1s", 2),
ENCODING_MAP(THUMB2_VCVTDF, 0xeeb70bc0,
SFP, 22, 12, DFP, 5, 0, UNUSED, -1, -1,
IS_BINARY_OP,
- "vcvf.f32.f64", "s!0d, s!1d", 2),
+ "vcvt.f32.f64 ", "!0s, !1S", 2),
+ ENCODING_MAP(THUMB2_VSQRTS, 0xeeb10ac0,
+ SFP, 22, 12, SFP, 5, 0, UNUSED, -1, -1,
+ IS_BINARY_OP,
+ "vsqrt.f32 ", "!0s, !1s", 2),
+ ENCODING_MAP(THUMB2_VSQRTD, 0xeeb10bc0,
+ DFP, 22, 12, DFP, 5, 0, UNUSED, -1, -1,
+ IS_BINARY_OP,
+ "vsqrt.f64 ", "!0S, !1S", 2),
};
#define PADDING_MOV_R0_R0 0x1C00