e2k: use decodetree for alops
This commit is contained in:
parent
5fdb52d067
commit
b9c2c736c2
1644
target/e2k/alop.decode
Normal file
1644
target/e2k/alop.decode
Normal file
File diff suppressed because it is too large
Load Diff
@ -938,6 +938,9 @@ typedef enum {
|
||||
ARGS_DDSD = alopf21_args(ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_S, ARG_SIZE_D),
|
||||
ARGS_DDDD = alopf21_args(ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_D),
|
||||
ARGS_PPPP = alopf21_args(ARG_SIZE_P, ARG_SIZE_P, ARG_SIZE_P, ARG_SIZE_P),
|
||||
|
||||
// compat
|
||||
ARGS_XSD = alopf7_args(ARG_SIZE_X, ARG_SIZE_S, ARG_SIZE_D),
|
||||
} AlopArgs;
|
||||
|
||||
typedef enum {
|
||||
@ -1239,14 +1242,14 @@ static AlopDesc alops[] = {
|
||||
{ X(OP_FXCMPNLTXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 5, 4 },
|
||||
{ X(OP_FXCMPNLEXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 6, 4 },
|
||||
{ X(OP_FXCMPODXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 7, 4 },
|
||||
{ X(OP_CCTOPO), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 0 },
|
||||
{ X(OP_CCTOPB), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 1 },
|
||||
{ X(OP_CCTOPE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 2 },
|
||||
{ X(OP_CCTOPBE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 3 },
|
||||
{ X(OP_CCTOPS), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 4 },
|
||||
{ X(OP_CCTOPP), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 5 },
|
||||
{ X(OP_CCTOPL), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 6 },
|
||||
{ X(OP_CCTOPLE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 7 },
|
||||
{ X(OP_CCTOPO), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 0 },
|
||||
{ X(OP_CCTOPB), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 1 },
|
||||
{ X(OP_CCTOPE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 2 },
|
||||
{ X(OP_CCTOPBE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 3 },
|
||||
{ X(OP_CCTOPS), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 4 },
|
||||
{ X(OP_CCTOPP), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 5 },
|
||||
{ X(OP_CCTOPL), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 6 },
|
||||
{ X(OP_CCTOPLE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 7 },
|
||||
{ X(OP_STAAB), ALOPF10, ARGS_S, ALOP_EXT, 0x1c, 1, -1, CHAN_25, { -1 } },
|
||||
{ X(OP_STAAH), ALOPF10, ARGS_S, ALOP_EXT, 0x1d, 1, -1, CHAN_25, { -1 } },
|
||||
{ X(OP_STAAW), ALOPF10, ARGS_S, ALOP_EXT, 0x1e, 1, -1, CHAN_25, { -1 } },
|
||||
|
@ -1,4 +1,9 @@
|
||||
gen = [
|
||||
decodetree.process('alop.decode', extra_args: ['--static-decode=decode_alop', '--insnwidth=64']),
|
||||
]
|
||||
|
||||
e2k_ss = ss.source_set()
|
||||
e2k_ss.add(gen)
|
||||
e2k_ss.add(files(
|
||||
'cpu.c',
|
||||
'cpu-dump.c',
|
||||
|
758
target/e2k/trans/alop-v1.c.inc
Normal file
758
target/e2k/trans/alop-v1.c.inc
Normal file
@ -0,0 +1,758 @@
|
||||
#define compat_format_alf1 ALOPF1
|
||||
#define compat_format_alf1_mas ALOPF1_MAS
|
||||
#define compat_format_alf1_lit8 ALOPF11_LIT8
|
||||
#define compat_format_alf2 ALOPF2
|
||||
#define compat_format_alf2_pshufh ALOPF12_PSHUFH
|
||||
#define compat_format_alf2_icalld ALOPF12_ICALLD
|
||||
#define compat_format_alf3_mas ALOPF3
|
||||
#define compat_format_alf7 ALOPF7
|
||||
#define compat_format_alf8 ALOPF8
|
||||
#define compat_format_alf10_mas ALOPF10
|
||||
#define compat_format_alf15 ALOPF15
|
||||
#define compat_format_alf16 ALOPF16
|
||||
#define compat_format_alf21 ALOPF21
|
||||
#define compat_format_alf21_log ALOPF21
|
||||
#define compat_format(F) glue(compat_format_, F)
|
||||
|
||||
#define compat_args_alf1(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R))
|
||||
#define compat_args_alf1_mas(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R))
|
||||
#define compat_args_alf1_lit8(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R))
|
||||
#define compat_args_alf2(R, S1, S2, S3) glue(ARGS_, glue(S2, R))
|
||||
#define compat_args_alf2_pshufh(R, S1, S2, S3) glue(ARGS_, glue(S2, R))
|
||||
#define compat_args_alf2_icalld(R, S1, S2, S3) glue(ARGS_, glue(S2, R))
|
||||
#define compat_args_alf3_mas(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R))
|
||||
#define compat_args_alf7(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R))
|
||||
#define compat_args_alf8(R, S1, S2, S3) glue(ARGS_, glue(S2, R))
|
||||
#define compat_args_alf10_mas(R, S1, S2, S3) glue(ARGS_, R)
|
||||
#define compat_args_alf15(R_, S1, S2, S3) glue(ARGS_, glue(S2, R))
|
||||
#define compat_args_alf16(R, S1, S2, S3) glue(ARGS_, R)
|
||||
#define compat_args_alf21(R, S1, S2, S3) glue(ARGS_, glue4(S1, S2, S3, R))
|
||||
#define compat_args_alf21_log(R, S1, S2, S3) glue(ARGS_, glue4(S1, S2, S3, R))
|
||||
#define compat_args(F, R, S1, S2, S3) glue(compat_args_, F)(R, S1, S2, S3)
|
||||
|
||||
#define lower_B b
|
||||
#define lower_S s
|
||||
#define lower_D d
|
||||
#define lower_X x
|
||||
#define lower_P q
|
||||
#define lower_Q q
|
||||
#define lower(S) glue(lower_, S)
|
||||
|
||||
#define compat_args2_alf1(R, S1, S2, S3) glue3(R, S1, S2)
|
||||
#define compat_args2_alf1_mas(R, S1, S2, S3)
|
||||
#define compat_args2_alf1_lit8(R, S1, S2, S3) glue3(R, S1, S2)
|
||||
#define compat_args2_alf2(R, S1, S2, S3) glue(R, S2)
|
||||
#define compat_args2_alf2_pshufh(R, S1, S2, S3) glue(R, S2)
|
||||
#define compat_args2_alf3_mas(R, S1, S2, S3)
|
||||
#define compat_args2_alf7(R, S1, S2, S3) glue3(R, S1, S2)
|
||||
#define compat_args2_alf8(R, S1, S2, S3) glue(R, S2)
|
||||
#define compat_args2_alf21(R, S1, S2, S3) glue4(R, S1, S2, S3)
|
||||
#define compat_args2_alf21_log(R, S1, S2, S3) glue4(R, S1, S2, S3)
|
||||
#define compat_args2(F, R, S1, S2, S3) glue(compat_args2_, F)(lower(R), lower(S1), lower(S2), lower(S3))
|
||||
|
||||
#define V_MIN(X) ((X) & 0xff)
|
||||
#define V_MAX(X) ((X) >> 8)
|
||||
#define R(MIN, MAX) (((MAX) << 8) | (MIN))
|
||||
#define V1_2 R(1, 2)
|
||||
#define V1_3 R(1, 3)
|
||||
|
||||
static bool check_version(Alop *alop, uint16_t versions[6])
|
||||
{
|
||||
uint16_t min_ver = V_MIN(versions[alop->chan]); \
|
||||
uint16_t max_ver = V_MAX(versions[alop->chan]); \
|
||||
return alop->ctx->version >= min_ver && (max_ver == 0 || alop->ctx->version <= max_ver);
|
||||
}
|
||||
|
||||
#define TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, CODE) \
|
||||
static bool glue(trans_, NAME)(DisasContext *ctx, glue(arg_, F) *a) \
|
||||
{ \
|
||||
uint16_t versions[6] = { C0, C1, C2, C3, C4, C5 }; \
|
||||
Alop *alop = &ctx->alops[ctx->cur_alop]; \
|
||||
if (!check_version(alop, versions)) { \
|
||||
return false; \
|
||||
} else if (ctx->only_check) { \
|
||||
alop->format = compat_format(F); \
|
||||
alop->args = compat_args(F, R, S1, S2, S3); \
|
||||
} else { \
|
||||
CODE; \
|
||||
} \
|
||||
return true; \
|
||||
}
|
||||
|
||||
#define TRANSW(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, E, GEN) \
|
||||
TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \
|
||||
{ glue4(gen_, F, E, compat_args2(F, R, S1, S2, S3))(alop, GEN); })
|
||||
|
||||
#define TRANSC(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, WRAP, OP1, OP2) \
|
||||
TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \
|
||||
{ WRAP(alop, OP1, OP2); })
|
||||
|
||||
#define TRANSM(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, ADDR, GEN, MEMOP, BASE) \
|
||||
TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \
|
||||
{ glue(gen_, F)(alop, ADDR, GEN, MEMOP, BASE); })
|
||||
|
||||
#define TRANS_(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, WRAP, GEN) \
|
||||
TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, { WRAP(alop, GEN); })
|
||||
|
||||
#define TRANSD(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, GEN) \
|
||||
TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, { GEN(alop); })
|
||||
|
||||
// special version:
|
||||
// * set old opcode (to reuse old code)
|
||||
// * direct call
|
||||
#define TRANSA(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, OP, GEN) \
|
||||
static bool glue(trans_, NAME)(DisasContext *ctx, glue(arg_, F) *a) \
|
||||
{ \
|
||||
uint16_t versions[6] = { C0, C1, C2, C3, C4, C5 }; \
|
||||
Alop *alop = &ctx->alops[ctx->cur_alop]; \
|
||||
if (!check_version(alop, versions)) { \
|
||||
return false; \
|
||||
} else if (ctx->only_check) { \
|
||||
alop->op = OP; \
|
||||
alop->format = compat_format(F); \
|
||||
alop->args = compat_args(F, R, S1, S2, S3); \
|
||||
} else { \
|
||||
GEN(alop); \
|
||||
} \
|
||||
return true; \
|
||||
}
|
||||
|
||||
TRANSW(andw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_and_i32);
|
||||
TRANSW(andd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_and_i64);
|
||||
TRANSW(andnw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_andn_i32);
|
||||
TRANSW(andnd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_andn_i64);
|
||||
TRANSW(orw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_or_i32);
|
||||
TRANSW(ord, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_or_i64);
|
||||
TRANSW(ornw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_orn_i32);
|
||||
TRANSW(ornd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_orn_i64);
|
||||
TRANSW(xorw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_xor_i32);
|
||||
TRANSW(xord, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_xor_i64);
|
||||
TRANSW(xornw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_xorn_i32);
|
||||
TRANSW(xornd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_xorn_i64);
|
||||
TRANSW(sxtb, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxtb);
|
||||
TRANSW(sxth, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxth);
|
||||
TRANSW(sxtw, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxtw);
|
||||
TRANSW(zxtb, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxtb);
|
||||
TRANSW(zxth, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxth);
|
||||
TRANSW(zxtw, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxtw);
|
||||
TRANSD(sxt, 1, 1, 1, 1, 1, 1, D,S,S,0, alf1, gen_sxt);
|
||||
TRANSD(mergew, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, gen_merges);
|
||||
TRANSD(merged, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, gen_merged);
|
||||
TRANSW(addw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_add_i32);
|
||||
TRANSW(addd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_add_i64);
|
||||
TRANSW(negw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf2, _, tcg_gen_neg_i32);
|
||||
TRANSW(subw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_sub_i32);
|
||||
TRANSW(negd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf2, _, tcg_gen_neg_i64);
|
||||
TRANSW(subd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_sub_i64);
|
||||
TRANSW(sclw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_rotl_i32);
|
||||
TRANSW(scld, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_rotl_i64);
|
||||
TRANSW(scrw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_rotr_i32);
|
||||
TRANSW(scrd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_rotr_i64);
|
||||
TRANSW(shlw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_shl_i32);
|
||||
TRANSW(shld, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_shl_i64);
|
||||
TRANSW(shrw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_shr_i32);
|
||||
TRANSW(shrd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_shr_i64);
|
||||
TRANSW(sarw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_sar_i32);
|
||||
TRANSW(sard, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_sar_i64);
|
||||
TRANSD(getfw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, gen_getfs);
|
||||
TRANSD(getfd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, gen_getfd);
|
||||
TRANSW(cmpowb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmposb);
|
||||
TRANSW(cmpbwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpbsb);
|
||||
TRANSW(cmpewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpesb);
|
||||
TRANSW(cmpbewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpbesb);
|
||||
TRANSW(cmpswb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpssb);
|
||||
TRANSW(cmppwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmppsb);
|
||||
TRANSW(cmplwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmplsb);
|
||||
TRANSW(cmplewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmplesb);
|
||||
TRANSW(cmpodb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpodb);
|
||||
TRANSW(cmpbdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpbdb);
|
||||
TRANSW(cmpedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpedb);
|
||||
TRANSW(cmpbedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpbedb);
|
||||
TRANSW(cmpsdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpsdb);
|
||||
TRANSW(cmppdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmppdb);
|
||||
TRANSW(cmpldb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpldb);
|
||||
TRANSW(cmpledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpledb);
|
||||
TRANSW(cmpandewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandesb);
|
||||
TRANSW(cmpandswb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandssb);
|
||||
TRANSW(cmpandpwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandpsb);
|
||||
TRANSW(cmpandlewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandlesb);
|
||||
TRANSW(cmpandedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandedb);
|
||||
TRANSW(cmpandsdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandsdb);
|
||||
TRANSW(cmpandpdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandpdb);
|
||||
TRANSW(cmpandledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandledb);
|
||||
TRANSD(cctopo, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopo);
|
||||
TRANSD(cctopb, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopb);
|
||||
TRANSD(cctope, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctope);
|
||||
TRANSD(cctopbe, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopbe);
|
||||
TRANSD(cctops, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctops);
|
||||
TRANSD(cctopp, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopp);
|
||||
TRANSD(cctopl, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopl);
|
||||
TRANSD(cctople, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctople);
|
||||
TRANSM(ldb, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UB, ADDR_FLAT);
|
||||
TRANSM(ldh, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UW, ADDR_FLAT);
|
||||
TRANSM(ldw, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UL, ADDR_FLAT);
|
||||
TRANSM(ldd, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UQ, ADDR_FLAT);
|
||||
// should be illop if not e2k32
|
||||
#if 1 || defined(TARGET_E2K32)
|
||||
TRANSM(ldcsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_CS);
|
||||
TRANSM(ldcsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_CS);
|
||||
TRANSM(ldcsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_CS);
|
||||
TRANSM(ldcsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_CS);
|
||||
TRANSM(lddsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_DS);
|
||||
TRANSM(lddsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_DS);
|
||||
TRANSM(lddsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_DS);
|
||||
TRANSM(lddsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_DS);
|
||||
TRANSM(ldesb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_ES);
|
||||
TRANSM(ldesh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_ES);
|
||||
TRANSM(ldesw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_ES);
|
||||
TRANSM(ldesd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_ES);
|
||||
TRANSM(ldfsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_FS);
|
||||
TRANSM(ldfsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_FS);
|
||||
TRANSM(ldfsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_FS);
|
||||
TRANSM(ldfsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_FS);
|
||||
//ldfsq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR
|
||||
TRANSM(ldgsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_GS);
|
||||
TRANSM(ldgsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_GS);
|
||||
TRANSM(ldgsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_GS);
|
||||
TRANSM(ldgsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_GS);
|
||||
//ldgsq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR
|
||||
TRANSM(ldssb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_SS);
|
||||
TRANSM(ldssh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_SS);
|
||||
TRANSM(ldssw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_SS);
|
||||
TRANSM(ldssd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_SS);
|
||||
//ldssq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR
|
||||
TRANSM(ldgdb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_GD);
|
||||
TRANSM(ldgdh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_GD);
|
||||
TRANSM(ldgdw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_GD);
|
||||
TRANSM(ldgdd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_GD);
|
||||
//ldgdq, 1, 0, 1, 1, 0, 1, Q,S,S,0, alf11_mas, AF_PAIR
|
||||
#endif
|
||||
//ldcudb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas
|
||||
//ldcudh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas
|
||||
//ldcudw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas
|
||||
//ldcudd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas
|
||||
//ldcudq, 1, 0, 1, 1, 0, 1, Q,S,S,0, alf11_mas, AF_PAIR
|
||||
//ldapb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas
|
||||
//ldaph, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas
|
||||
//ldapw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas
|
||||
//ldapq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR
|
||||
//ldodrb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodrh, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodrw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodrd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodrq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
//ldodwb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodwh, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodww, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodwd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodwq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
//ldodpb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodph, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodpw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodpd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3
|
||||
//ldodpq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
TRANSM(stb, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UB, ADDR_FLAT);
|
||||
TRANSM(sth, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UW, ADDR_FLAT);
|
||||
TRANSM(stw, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UL, ADDR_FLAT);
|
||||
TRANSM(std, 0, 0, 1, 0, 0, 1, D,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i64, MO_UQ, ADDR_FLAT);
|
||||
//stq, 0, 0, 5, 0, 0, 5, Q,D,D,0, alf13_mas, AF_PAIR
|
||||
// should be illop if not e2k32
|
||||
#if 1 || defined(TARGET_E2K32)
|
||||
TRANSM(stcsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_CS);
|
||||
TRANSM(stcsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_CS);
|
||||
TRANSM(stcsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_CS);
|
||||
TRANSM(stcsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_CS);
|
||||
//stcsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stdsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_DS);
|
||||
TRANSM(stdsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_DS);
|
||||
TRANSM(stdsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_DS);
|
||||
TRANSM(stdsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_DS);
|
||||
//stdsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stesb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_ES);
|
||||
TRANSM(stesh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_ES);
|
||||
TRANSM(stesw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_ES);
|
||||
TRANSM(stesd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_ES);
|
||||
//stesq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stfsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_FS);
|
||||
TRANSM(stfsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_FS);
|
||||
TRANSM(stfsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_FS);
|
||||
TRANSM(stfsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_FS);
|
||||
//stfsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stgsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_GS);
|
||||
TRANSM(stgsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_GS);
|
||||
TRANSM(stgsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_GS);
|
||||
TRANSM(stgsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_GS);
|
||||
//stgsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stssb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_SS);
|
||||
TRANSM(stssh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_SS);
|
||||
TRANSM(stssw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_SS);
|
||||
TRANSM(stssd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_SS);
|
||||
//stssq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
TRANSM(stgdb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_GD);
|
||||
TRANSM(stgdh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_GD);
|
||||
TRANSM(stgdw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_GD);
|
||||
TRANSM(stgdd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_GD);
|
||||
//stgdq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR
|
||||
#endif
|
||||
//stodrb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodrh, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodrw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodrd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodrq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
//stodwb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodwh, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodww, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodwd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodwq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
//stodpb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodph, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodpw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodpd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3
|
||||
//stodpq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3
|
||||
|
||||
TRANSA(staab, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAB, gen_staab);
|
||||
TRANSA(staah, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAH, gen_staah);
|
||||
TRANSA(staaw, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAW, gen_staaw);
|
||||
TRANSA(staad, 0, 0, 1, 0, 0, 1, D,0,0,0, alf10_mas, OP_STAAD, gen_staad);
|
||||
TRANSA(staaq, 0, 0, 1, 0, 0, 1, Q,0,0,0, alf10_mas, OP_STAAQ, gen_staaq);
|
||||
//stapb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas
|
||||
//staph, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas
|
||||
//stapw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas
|
||||
//stapd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas
|
||||
//stapq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR
|
||||
//ldrd, 1, 0, 1, 1, 0, 1, D,D,D,0, alf11
|
||||
//strd, 0, 0, 1, 0, 0, 1, D,D,D,0, alf13_mas
|
||||
//aaurrw, 0, 0, 1, 0, 0, 1, S,0,0,0, aaurr
|
||||
//aaurrd, 0, 0, 1, 0, 0, 1, D,0,0,0, aaurr
|
||||
//aaurrq, 0, 0, 1, 0, 0, 1, Q,0,0,0, aaurr, AF_PAIR
|
||||
//aaurww, 0, 0, 1, 0, 0, 1, S,0,0,0, aaurw
|
||||
//aaurwd, 0, 0, 1, 0, 0, 1, D,0,0,0, aaurw
|
||||
//aaurwq, 0, 0, 1, 0, 0, 1, Q,0,0,0, aaurw, AF_PAIR
|
||||
TRANSA(gettags, 0, 0, 1, 0, 0, 1, S,0,S,0, alf2, OP_GETTAGS, gen_gettags);
|
||||
TRANSA(gettagd, 0, 0, 1, 0, 0, 1, S,0,D,0, alf2, OP_GETTAGD, gen_gettagd);
|
||||
TRANSA(puttags, 0, 0, 1, 0, 0, 1, S,S,S,0, alf1_mas, OP_PUTTAGS, gen_puttags);
|
||||
TRANSA(puttagd, 0, 0, 1, 0, 0, 1, D,D,S,0, alf1_mas, OP_PUTTAGD, gen_puttagd);
|
||||
//gettc, 1, 0, 0, 0, 0, 0, D,0,S,0, alf12
|
||||
//puttc, 1, 0, 0, 0, 0, 0, D,D,D,0, alf11
|
||||
//invtc, 1, 0, 0, 0, 0, 0, D,0,S,0, alf12
|
||||
TRANSA(movts, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTS, gen_movts);
|
||||
TRANSA(movtcs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTCS, gen_movtcs);
|
||||
//TRANSA(movtrs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTRS, gen_movtrs);
|
||||
//TRANSA(movtrcs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTRCS, gen_movtrcs);
|
||||
TRANSA(movtd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTD, gen_movtd);
|
||||
TRANSA(movtcd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTCD, gen_movtcd);
|
||||
//TRANSA(movtrd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTRD, gen_movtrd);
|
||||
//TRANSA(movtrcd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTRCD, gen_movtrcd);
|
||||
TRANSA(movtq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf2, OP_MOVTQ, gen_movtq);
|
||||
TRANSA(movtcq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf2, OP_MOVTCQ, gen_movtcq);
|
||||
//movtrq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf22, AF_PAIR
|
||||
//movtrcq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf22, AF_PAIR
|
||||
//getsap, 1, 1, 0, 0, 0, 0, Q,0,S,0, alf2, AF_PAIR
|
||||
//cudtoap, 1, 1, 0, 1, 1, 0, Q,0,S,0, alf2, AF_PAIR
|
||||
//gdtoap, 1, 1, 0, 1, 1, 0, Q,0,S,0, alf2, AF_PAIR
|
||||
//vfsi, 0, 1, 0, 0, 1, 0, D,S,D,0, alf1
|
||||
TRANSA(getpl, 1, 0, 0, 1, 0, 0, D,0,S,0, alf2, OP_GETPL, gen_getpl);
|
||||
TRANSW(fxcmpeqsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpeqs);
|
||||
TRANSW(fxcmpltsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmplts);
|
||||
TRANSW(fxcmplesb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmples);
|
||||
TRANSW(fxcmpuodsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpuods);
|
||||
TRANSW(fxcmpneqsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpneqs);
|
||||
TRANSW(fxcmpnltsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpnlts);
|
||||
TRANSW(fxcmpnlesb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpnles);
|
||||
TRANSW(fxcmpodsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpods);
|
||||
TRANSW(fxcmpeqdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpeqd);
|
||||
TRANSW(fxcmpltdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpltd);
|
||||
TRANSW(fxcmpledb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpled);
|
||||
TRANSW(fxcmpuoddb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpuodd);
|
||||
TRANSW(fxcmpneqdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpneqd);
|
||||
TRANSW(fxcmpnltdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpnltd);
|
||||
TRANSW(fxcmpnledb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpnled);
|
||||
TRANSW(fxcmpoddb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpodd);
|
||||
TRANSW(fxcmpeqxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpeqx);
|
||||
TRANSW(fxcmpltxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpltx);
|
||||
TRANSW(fxcmplexb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmplex);
|
||||
TRANSW(fxcmpuodxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpuodx);
|
||||
TRANSW(fxcmpneqxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpneqx);
|
||||
TRANSW(fxcmpnltxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpnltx);
|
||||
TRANSW(fxcmpnlexb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpnlex);
|
||||
TRANSW(fxcmpodxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpodx);
|
||||
TRANSW(fcmpeqsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpeqs);
|
||||
TRANSW(fcmpltsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmplts);
|
||||
TRANSW(fcmplesb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmples);
|
||||
TRANSW(fcmpuodsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpuods);
|
||||
TRANSW(fcmpneqsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpneqs);
|
||||
TRANSW(fcmpnltsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpnlts);
|
||||
TRANSW(fcmpnlesb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpnles);
|
||||
TRANSW(fcmpodsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpods);
|
||||
TRANSW(fcmpeqdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpeqd);
|
||||
TRANSW(fcmpltdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpltd);
|
||||
TRANSW(fcmpledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpled);
|
||||
TRANSW(fcmpuoddb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpuodd);
|
||||
TRANSW(fcmpneqdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpneqd);
|
||||
TRANSW(fcmpnltdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpnltd);
|
||||
TRANSW(fcmpnledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpnled);
|
||||
TRANSW(fcmpoddb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpodd);
|
||||
TRANSW(fadds, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fadds);
|
||||
TRANSW(faddd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_faddd);
|
||||
TRANSW(fsubs, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fsubs);
|
||||
TRANSW(fsubd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fsubd);
|
||||
TRANSW(fmins, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fmins);
|
||||
TRANSW(fmind, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmind);
|
||||
TRANSW(fmaxs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fmaxs);
|
||||
TRANSW(fmaxd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmaxd);
|
||||
TRANSW(fmuls, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fmuls);
|
||||
TRANSW(fmuld, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fmuld);
|
||||
TRANSW(fstoiw, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_fstois);
|
||||
TRANSW(fstoiwtr, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_fstoistr);
|
||||
TRANSW(iwtofs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_istofs);
|
||||
TRANSW(fdtoid, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_fdtoid);
|
||||
TRANSW(fxtoid, 1, 1, 0, 1, 1, 0, D,0,X,0, alf2, _env_, gen_helper_fxtoid);
|
||||
TRANSW(idtofd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_idtofd);
|
||||
TRANSW(idtofx, 1, 1, 0, 1, 1, 0, X,0,D,0, alf2, _env_, gen_helper_idtofx);
|
||||
TRANSW(fxtofd, 1, 1, 0, 1, 1, 0, D,0,X,0, alf2, _env_, gen_helper_fxtofd);
|
||||
TRANSW(fdtofx, 1, 1, 0, 1, 1, 0, X,0,D,0, alf2, _env_, gen_helper_fdtofx);
|
||||
TRANSW(pfstoiw, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pfstois);
|
||||
TRANSW(pfstoiwtr, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pfstoistr);
|
||||
TRANSW(piwtofs, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pistofs);
|
||||
TRANSW(fstoid, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstoid);
|
||||
TRANSW(iwtofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_istofd);
|
||||
TRANSW(iwtofx, 1, 1, 0, 1, 1, 0, X,0,S,0, alf2, _env_, gen_helper_istofx);
|
||||
TRANSW(fstofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstofd);
|
||||
TRANSW(fstofx, 1, 1, 0, 1, 1, 0, X,0,S,0, alf2, _env_, gen_helper_fstofx);
|
||||
TRANSW(pfstofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstofd);
|
||||
TRANSW(fdtoiw, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtois);
|
||||
TRANSW(fxtoiw, 1, 1, 0, 1, 1, 0, S,0,X,0, alf2, _env_, gen_helper_fxtois);
|
||||
TRANSW(fdtoiwtr, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtoistr);
|
||||
TRANSW(idtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_idtofs);
|
||||
TRANSW(fdtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtofs);
|
||||
TRANSW(fxtofs, 1, 1, 0, 1, 1, 0, S,0,X,0, alf2, _env_, gen_helper_fxtofs);
|
||||
TRANSW(pfdtoiw, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtois);
|
||||
TRANSW(pfdtoiwtr, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtoistr);
|
||||
TRANSW(pfdtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtofs);
|
||||
TRANSW(udivw, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _tag_, gen_udivs);
|
||||
TRANSW(udivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _tag_, gen_udivd);
|
||||
TRANSW(sdivw, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _tag_, gen_sdivs);
|
||||
TRANSW(sdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _tag_, gen_sdivd);
|
||||
TRANSW(udivx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_udivx);
|
||||
TRANSW(umodx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_umodx);
|
||||
TRANSW(sdivx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_sdivx);
|
||||
TRANSW(smodx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_smodx);
|
||||
TRANSW(fxaddss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxaddss);
|
||||
TRANSW(fxadddd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxadddd);
|
||||
TRANSW(fxaddsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxaddsx);
|
||||
TRANSW(fxadddx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxadddx);
|
||||
TRANSW(fxaddxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxaddxs);
|
||||
TRANSW(fxaddxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxaddxd);
|
||||
TRANSW(fxaddxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxaddxx);
|
||||
TRANSW(fxdivss, 0, 0, 0, 0, 0, 1, S,X,S,0, alf1, _env_, gen_helper_fxdivss);
|
||||
TRANSW(fxsubss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxsubss);
|
||||
TRANSW(fxdivdd, 0, 0, 0, 0, 0, 1, D,X,D,0, alf1, _env_, gen_helper_fxdivdd);
|
||||
TRANSW(fxsubdd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxsubdd);
|
||||
TRANSW(fxdivsx, 0, 0, 0, 0, 0, 1, X,X,S,0, alf1, _env_, gen_helper_fxdivsx);
|
||||
TRANSW(fxsubsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxsubsx);
|
||||
TRANSW(fxdivdx, 0, 0, 0, 0, 0, 1, X,X,D,0, alf1, _env_, gen_helper_fxdivdx);
|
||||
TRANSW(fxsubdx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxsubdx);
|
||||
TRANSW(fxdivxs, 0, 0, 0, 0, 0, 1, S,X,X,0, alf1, _env_, gen_helper_fxdivxs);
|
||||
TRANSW(fxsubxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxsubxs);
|
||||
TRANSW(fxdivxd, 0, 0, 0, 0, 0, 1, D,X,X,0, alf1, _env_, gen_helper_fxdivxd);
|
||||
TRANSW(fxsubxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxsubxd);
|
||||
TRANSW(fxdivxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _env_, gen_helper_fxdivxx);
|
||||
TRANSW(fxsubxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxsubxx);
|
||||
TRANSW(fxmulss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxmulss);
|
||||
TRANSW(fxmuldd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxmuldd);
|
||||
TRANSW(fxmulsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxmulsx);
|
||||
TRANSW(fxmuldx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxmuldx);
|
||||
TRANSW(fxmulxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxmulxs);
|
||||
TRANSW(fxmulxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxmulxd);
|
||||
TRANSW(fxmulxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxmulxx);
|
||||
TRANSW(fxrsubss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxrsubss);
|
||||
TRANSW(fxrsubdd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxrsubdd);
|
||||
TRANSW(fxrsubsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxrsubsx);
|
||||
TRANSW(fxrsubdx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxrsubdx);
|
||||
TRANSW(fxsqrtisx, 0, 0, 0, 0, 0, 1, X,0,S,0, alf2, _env_, gen_helper_fstofx);
|
||||
TRANSW(fxsqrtidx, 0, 0, 0, 0, 0, 1, X,0,D,0, alf2, _env_, gen_helper_fdtofx);
|
||||
TRANSW(fxsqrtixx, 0, 0, 0, 0, 0, 1, X,0,X,0, alf2, _, gen_movx);
|
||||
TRANSW(fxsqrtuxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _, gen_fxsqrtuxx);
|
||||
TRANSW(fxsqrtusx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _, gen_fxsqrtusx);
|
||||
TRANSW(fxsqrtudx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _, gen_fxsqrtudx);
|
||||
TRANSW(fxsqrttxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _env_, gen_helper_fxsqrttxx);
|
||||
TRANSW(fxsqrttsx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _env_, gen_helper_fxsqrttsx);
|
||||
TRANSW(fxsqrttdx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _env_, gen_helper_fxsqrttdx);
|
||||
TRANSW(fxdivtss, 0, 0, 0, 0, 0, 1, S,S,X,0, alf1, _env_, gen_helper_fxdivtss);
|
||||
TRANSW(fxdivtdd, 0, 0, 0, 0, 0, 1, D,D,X,0, alf1, _env_, gen_helper_fxdivtdd);
|
||||
TRANSW(fxdivtsx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _env_, gen_helper_fxdivtsx);
|
||||
TRANSW(fxdivtdx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _env_, gen_helper_fxdivtdx);
|
||||
TRANSW(movfi, 2, 1, 0, 2, 1, 0, S,0,X,0, alf2, _, gen_movfi);
|
||||
TRANSW(movif, 2, 1, 0, 2, 1, 0, X,D,S,0, alf1, _, gen_movif);
|
||||
TRANSW(pminub, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pminub);
|
||||
TRANSW(pminsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsh);
|
||||
TRANSW(pmaxub, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxub);
|
||||
TRANSW(pmaxsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsh);
|
||||
TRANSW(punpckhbh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhbh);
|
||||
TRANSW(punpcklbh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklbh);
|
||||
TRANSW(punpckhhw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhhw);
|
||||
TRANSW(punpcklhw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklhw);
|
||||
TRANSW(punpckhwd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhwd);
|
||||
TRANSW(punpcklwd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklwd);
|
||||
TRANSW(pmovmskps, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskps);
|
||||
TRANSW(pmovmskpd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskpd);
|
||||
TRANSW(packsshb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packsshb);
|
||||
TRANSW(packushb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packushb);
|
||||
TRANSW(packsswh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packsswh);
|
||||
TRANSW(paddb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add8_i64);
|
||||
TRANSW(paddh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add16_i64);
|
||||
TRANSW(paddw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add32_i64);
|
||||
TRANSW(paddd, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_add_i64);
|
||||
TRANSW(paddsb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddsb);
|
||||
TRANSW(paddsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddsh);
|
||||
TRANSW(pmovmskb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskb);
|
||||
TRANSW(paddusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddusb);
|
||||
TRANSW(paddush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddush);
|
||||
TRANSW(psubb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub8_i64);
|
||||
TRANSW(psubh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub16_i64);
|
||||
TRANSW(psubw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub32_i64);
|
||||
TRANSW(psubd, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_sub_i64);
|
||||
TRANSW(psubsb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubsb);
|
||||
TRANSW(psubsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubsh);
|
||||
TRANSW(psubusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubusb);
|
||||
TRANSW(psubush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubush);
|
||||
TRANSW(psrlqh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psrlqh);
|
||||
TRANSW(psrlql, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psrlql);
|
||||
TRANSW(psllqh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psllqh);
|
||||
TRANSW(psllql, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psllql);
|
||||
TRANSW(psrlw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrlw);
|
||||
TRANSW(psrlh, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrlh);
|
||||
TRANSW(psraw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psraw);
|
||||
TRANSW(psrah, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrah);
|
||||
TRANSW(psllw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psllw);
|
||||
TRANSW(psllh, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psllh);
|
||||
TRANSW(pshufw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pshufw);
|
||||
TRANSW(pshufh, 0, 1, 0, 0, 1, 0, D,0,D,0, alf2_pshufh, _, gen_helper_pshufh);
|
||||
TRANSW(pcmpeqb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqb);
|
||||
TRANSW(pcmpeqh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqh);
|
||||
TRANSW(pcmpeqw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqw);
|
||||
TRANSW(pcmpgtb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtb);
|
||||
TRANSW(pcmpgth, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgth);
|
||||
TRANSW(pcmpgtw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtw);
|
||||
TRANSW(pmulhh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmulhh);
|
||||
TRANSW(pmullh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmullh);
|
||||
TRANSW(pmaddh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmaddh);
|
||||
TRANSW(pmulhuh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmulhuh);
|
||||
TRANSW(psadbw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_psadbw);
|
||||
TRANSW(pextrh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pextrh);
|
||||
TRANSW(pinsh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pinsh);
|
||||
TRANSW(pavgusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pavgusb);
|
||||
TRANSW(pavgush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pavgush);
|
||||
TRANSW(mulw, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _, tcg_gen_mul_i32);
|
||||
TRANSW(muld, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_mul_i64);
|
||||
TRANSW(umulx, 1, 1, 0, 1, 1, 0, D,S,S,0, alf1, _, gen_umulx);
|
||||
TRANSW(smulx, 1, 1, 0, 1, 1, 0, D,S,S,0, alf1, _, gen_smulx);
|
||||
TRANSW(insfw, 1, 1, 0, 1, 1, 0, S,S,S,S, alf21, _, gen_insfs);
|
||||
TRANSD(insfd, 1, 1, 0, 1, 1, 0, D,D,D,D, alf21, gen_insfd);
|
||||
TRANSW(fxcmpudsf, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxcmpudsf);
|
||||
TRANSW(fxcmpodsf, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxcmpodsf);
|
||||
TRANSW(fxcmpuddf, 1, 1, 0, 1, 1, 0, S,X,D,0, alf1, _env_, gen_helper_fxcmpuddf);
|
||||
TRANSW(fxcmpoddf, 1, 1, 0, 1, 1, 0, S,X,D,0, alf1, _env_, gen_helper_fxcmpoddf);
|
||||
TRANSW(fxcmpudxf, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxcmpudxf);
|
||||
TRANSW(fxcmpodxf, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxcmpodxf);
|
||||
TRANSW(fcmpeqs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpeqs);
|
||||
TRANSW(fcmplts, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmplts);
|
||||
TRANSW(fcmples, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmples);
|
||||
TRANSW(fcmpuods, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpuods);
|
||||
TRANSW(fcmpneqs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpneqs);
|
||||
TRANSW(fcmpnlts, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpnlts);
|
||||
TRANSW(fcmpnles, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpnles);
|
||||
TRANSW(fcmpods, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpods);
|
||||
TRANSW(fcmpeqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpeqd);
|
||||
TRANSW(fcmpltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpltd);
|
||||
TRANSW(fcmpled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpled);
|
||||
TRANSW(fcmpuodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpuodd);
|
||||
TRANSW(fcmpneqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpneqd);
|
||||
TRANSW(fcmpnltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnltd);
|
||||
TRANSW(fcmpnled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnled);
|
||||
TRANSW(fcmpodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpodd);
|
||||
TRANSW(fcmpudsf, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpudsf);
|
||||
TRANSW(fcmpodsf, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpodsf);
|
||||
TRANSW(fcmpuddf, 1, 1, 0, 1, 1, 0, S,D,D,0, alf1, _env_, gen_helper_fcmpuddf);
|
||||
TRANSW(fcmpoddf, 1, 1, 0, 1, 1, 0, S,D,D,0, alf1, _env_, gen_helper_fcmpoddf);
|
||||
TRANSW(pfadds, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfadds);
|
||||
TRANSW(pfaddd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_faddd);
|
||||
TRANSW(pfsubs, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfsubs);
|
||||
TRANSW(pfsubd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fsubd);
|
||||
TRANSW(pfmins, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfmins);
|
||||
TRANSW(pfmind, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmind);
|
||||
TRANSW(pfmaxs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfmaxs);
|
||||
TRANSW(pfmaxd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmaxd);
|
||||
TRANSW(pfmuls, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfmuls);
|
||||
TRANSW(pfmuld, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmuld);
|
||||
TRANSW(pfcmpeqs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpeqs);
|
||||
TRANSW(pfcmplts, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmplts);
|
||||
TRANSW(pfcmples, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmples);
|
||||
TRANSW(pfcmpuods, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpuods);
|
||||
TRANSW(pfcmpneqs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpneqs);
|
||||
TRANSW(pfcmpnlts, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpnlts);
|
||||
TRANSW(pfcmpnles, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpnles);
|
||||
TRANSW(pfcmpods, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpods);
|
||||
TRANSW(pfcmpeqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpeqd);
|
||||
TRANSW(pfcmpltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpltd);
|
||||
TRANSW(pfcmpled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpled);
|
||||
TRANSW(pfcmpuodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpuodd);
|
||||
TRANSW(pfcmpneqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpneqd);
|
||||
TRANSW(pfcmpnltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnltd);
|
||||
TRANSW(pfcmpnled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnled);
|
||||
TRANSW(pfcmpodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpodd);
|
||||
TRANSW(pandd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_and_i64);
|
||||
TRANSW(pandnd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, gen_andn_i64);
|
||||
TRANSW(pord, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_or_i64);
|
||||
TRANSW(pxord, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_xor_i64);
|
||||
TRANSW(psrld, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_psrld);
|
||||
TRANSW(pslld, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_pslld);
|
||||
TRANSW(fdivs, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _env_, gen_helper_fdivs);
|
||||
TRANSW(fdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fdivd);
|
||||
TRANSW(pfdivs, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _env_, gen_helper_fdivs);
|
||||
TRANSW(pfdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fdivd);
|
||||
TRANSW(fsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_fsqrts);
|
||||
TRANSW(fsqrtid, 0, 0, 0, 0, 0, 1, D,0,D,0, alf2, _, tcg_gen_mov_i64);
|
||||
TRANSW(pfsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_fsqrts);
|
||||
TRANSW(frcps, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_frcps);
|
||||
TRANSW(fsqrttd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fsqrttd);
|
||||
TRANSW(pfsqrttd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fsqrttd);
|
||||
TRANSW(frsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_frsqrts);
|
||||
TRANSD(rww, 1, 0, 0, 0, 0, 0, 0,0,S,0, alf15, gen_rws);
|
||||
TRANSD(rwd, 1, 0, 0, 0, 0, 0, 0,0,D,0, alf15, gen_rwd);
|
||||
TRANSD(rrw, 1, 0, 0, 0, 0, 0, S,0,0,0, alf16, gen_rrs);
|
||||
TRANSD(rrd, 1, 0, 0, 0, 0, 0, D,0,0,0, alf16, gen_rrd);
|
||||
TRANSW(getsp, 1, 0, 0, 0, 0, 0, D,0,S,0, alf2, _env_, gen_helper_getsp);
|
||||
//aptoap, 1, 1, 0, 1, 1, 0, Q,Q,S,0, alf11, AF_PAIR
|
||||
//getva, 1, 0, 0, 1, 0, 0, D,Q,S,0, alf11
|
||||
//tdtomp, 1, 1, 0, 1, 1, 0, D,D,D,0, alf11, AF_REMOVED_IN_V3
|
||||
//odtoap, 1, 1, 0, 1, 1, 0, Q,Q,D,0, alf11, AF_REMOVED_IN_V3
|
||||
//cast, 1, 1, 0, 1, 1, 0, Q,Q,Q,0, alf11, AF_REMOVED_IN_V3
|
||||
//gettd, 1, 0, 0, 1, 0, 0, D,0,D,0, alf12, AF_REMOVED_IN_V3
|
||||
//getsod, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf12, AF_REMOVED_IN_V3
|
||||
|
||||
//andw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//andnw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//orw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//ornw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xorw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xornw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//addw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//subw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//sclw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//scrw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shlw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shrw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//sarw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//umulx_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//smulx_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//incw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//decw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//andw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//andnw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//orw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//ornw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xorw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xornw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//addw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//subw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//sclw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//scrw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shlw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shrw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//sarw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//umulx_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//smulx_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//incw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//decw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//andw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//andnw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//orw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//ornw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xorw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//xornw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//addw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//subw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//sclw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//scrw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shlw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//shrw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//sarw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//umulx_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//smulx_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11
|
||||
//incw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
//decw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21
|
||||
|
||||
#define TRANS_ICOMB(NAME, C0, C1, C2, C3, C4, C5, OP2) \
|
||||
TRANSC(glue3(and_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_AND, OP2); \
|
||||
TRANSC(glue3(and_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_AND, OP2); \
|
||||
TRANSC(glue3(andn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ANDN, OP2); \
|
||||
TRANSC(glue3(andn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ANDN, OP2); \
|
||||
TRANSC(glue3(or_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_OR, OP2); \
|
||||
TRANSC(glue3(or_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_OR, OP2); \
|
||||
TRANSC(glue3(orn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ORN, OP2); \
|
||||
TRANSC(glue3(orn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ORN, OP2); \
|
||||
TRANSC(glue3(xor_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_XOR, OP2); \
|
||||
TRANSC(glue3(xor_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_XOR, OP2); \
|
||||
TRANSC(glue3(xorn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_XORN, OP2); \
|
||||
TRANSC(glue3(xorn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_XORN, OP2); \
|
||||
TRANSC(glue3(merge_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_MERGE, OP2); \
|
||||
TRANSC(glue3(merge_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_MERGE, OP2); \
|
||||
TRANSC(glue3(add_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ADD, OP2); \
|
||||
TRANSC(glue3(add_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ADD, OP2); \
|
||||
TRANSC(glue3(sub_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SUB, OP2); \
|
||||
TRANSC(glue3(sub_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SUB, OP2); \
|
||||
TRANSC(glue3(scl_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SCL, OP2); \
|
||||
TRANSC(glue3(scl_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SCL, OP2); \
|
||||
TRANSC(glue3(scr_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SCR, OP2); \
|
||||
TRANSC(glue3(scr_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SCR, OP2); \
|
||||
TRANSC(glue3(shl_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SHL, OP2); \
|
||||
TRANSC(glue3(shl_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SHL, OP2); \
|
||||
TRANSC(glue3(shr_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SHR, OP2); \
|
||||
TRANSC(glue3(shr_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SHR, OP2); \
|
||||
TRANSC(glue3(sar_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SAR, OP2); \
|
||||
TRANSC(glue3(sar_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SAR, OP2); \
|
||||
TRANSC(glue3(getf_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_GETF, OP2); \
|
||||
TRANSC(glue3(getf_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_GETF, OP2)
|
||||
|
||||
TRANS_ICOMB(and, 0, 1, 0, 0, 1, 0, ICOMB_AND);
|
||||
TRANS_ICOMB(andn, 0, 1, 0, 0, 1, 0, ICOMB_ANDN);
|
||||
TRANS_ICOMB(or, 0, 1, 0, 0, 1, 0, ICOMB_OR);
|
||||
TRANS_ICOMB(orn, 0, 1, 0, 0, 1, 0, ICOMB_ORN);
|
||||
TRANS_ICOMB(xor, 0, 1, 0, 0, 1, 0, ICOMB_XOR);
|
||||
TRANS_ICOMB(xorn, 0, 1, 0, 0, 1, 0, ICOMB_XORN);
|
||||
TRANS_ICOMB(rsub, 0, 1, 0, 0, 1, 0, ICOMB_RSUB);
|
||||
TRANS_ICOMB(add, 0, 1, 0, 0, 1, 0, ICOMB_ADD);
|
||||
TRANS_ICOMB(sub, 0, 1, 0, 0, 1, 0, ICOMB_SUB);
|
||||
|
||||
TRANS_ICOMB(merge, 0, V1_2, 0, 0, V1_2, 0, ICOMB_MERGE);
|
||||
TRANS_ICOMB(scl, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SCL);
|
||||
TRANS_ICOMB(scr, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SCR);
|
||||
TRANS_ICOMB(shl, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SHL);
|
||||
TRANS_ICOMB(shr, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SHR);
|
||||
TRANS_ICOMB(sar, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SAR);
|
||||
TRANS_ICOMB(getf, 0, V1_2, 0, 0, V1_2, 0, ICOMB_GETF);
|
||||
|
||||
TRANSC(fmul_adds, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(fmul_addd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(fmul_subs, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(fmul_subd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(fmul_rsubs, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_RSUB);
|
||||
TRANSC(fmul_rsubd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_RSUB);
|
||||
|
||||
TRANSC(pfmul_adds, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(pfmul_addd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(pfmul_subs, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(pfmul_subd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(pfmul_rsubs, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_RSUB);
|
||||
TRANSC(pfmul_rsubd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_RSUB);
|
||||
|
||||
TRANSC(fadd_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_MUL);
|
||||
TRANSC(fadd_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_MUL);
|
||||
TRANSC(fsub_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_MUL);
|
||||
TRANSC(fsub_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_MUL);
|
||||
|
||||
TRANSC(pfadd_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_MUL);
|
||||
TRANSC(pfadd_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_MUL);
|
||||
TRANSC(pfsub_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_MUL);
|
||||
TRANSC(pfsub_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_MUL);
|
42
target/e2k/trans/alop-v2.c.inc
Normal file
42
target/e2k/trans/alop-v2.c.inc
Normal file
@ -0,0 +1,42 @@
|
||||
TRANSW(bitrevw, 2, 2, 0, 2, 2, 0, S,0,S,0, alf2, _, gen_bitrevs);
|
||||
TRANSW(bitrevd, 2, 2, 0, 2, 2, 0, D,0,D,0, alf2, _, gen_bitrevd);
|
||||
TRANSW(lzcnts, 0, 2, 0, 0, 2, 0, S,0,S,0, alf2, _, gen_lzcnts);
|
||||
TRANSW(lzcntd, 0, 2, 0, 0, 2, 0, D,0,D,0, alf2, _, gen_lzcntd);
|
||||
TRANSW(popcnts, 0, 2, 0, 0, 2, 0, S,0,S,0, alf2, _, tcg_gen_ctpop_i32);
|
||||
TRANSW(popcntd, 0, 2, 0, 0, 2, 0, D,0,D,0, alf2, _, tcg_gen_ctpop_i64);
|
||||
TRANSW(fdtoidtr, 2, 2, 0, 2, 2, 0, D,0,D,0, alf2, _env_, gen_helper_fdtoidtr);
|
||||
TRANSW(fxtoidtr, 2, 2, 0, 2, 2, 0, D,0,X,0, alf2, _env_, gen_helper_fxtoidtr);
|
||||
TRANSW(fstoidtr, 2, 2, 0, 2, 2, 0, D,0,S,0, alf2, _env_, gen_helper_fstoidtr);
|
||||
TRANSW(fxtoiwtr, 2, 2, 0, 2, 2, 0, S,0,X,0, alf2, _env_, gen_helper_fxtoistr);
|
||||
TRANSW(movx, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movx);
|
||||
TRANSW(movxa, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movxa);
|
||||
TRANSW(movxc, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movxc);
|
||||
TRANSW(pmulubhh, 0, 2, 0, 0, 2, 0, D,D,D,0, alf1, _, gen_helper_pmulubhh);
|
||||
TRANSW(pshufb, 2, 2, 0, 2, 2, 0, D,D,D,D, alf21, _, gen_helper_pshufb);
|
||||
TRANSW(pmerge, 2, 2, 0, 2, 2, 0, D,D,D,D, alf21, _, gen_helper_pmerge);
|
||||
|
||||
TRANSC(fadd_adds, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(fadd_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(fsub_adds, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(fsub_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(fadd_subs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(fadd_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(fsub_subs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(fsub_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(fadd_rsubs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(fadd_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(fsub_rsubs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_RSUB);
|
||||
TRANSC(fsub_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_RSUB);
|
||||
|
||||
TRANSC(pfadd_adds, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(pfadd_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(pfsub_adds, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(pfsub_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(pfadd_subs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(pfadd_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(pfsub_subs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(pfsub_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(pfadd_rsubs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(pfadd_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(pfsub_rsubs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_RSUB);
|
||||
TRANSC(pfsub_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_RSUB);
|
79
target/e2k/trans/alop-v3.c.inc
Normal file
79
target/e2k/trans/alop-v3.c.inc
Normal file
@ -0,0 +1,79 @@
|
||||
TRANSW(umulhd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _, gen_umulhd);
|
||||
TRANSW(smulhd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _, gen_smulhd);
|
||||
TRANSW(pminsb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsb);
|
||||
TRANSW(pminuh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminuh);
|
||||
TRANSW(pmaxsb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsb);
|
||||
TRANSW(pmaxuh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxuh);
|
||||
TRANSW(pcmpeqd, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqd);
|
||||
TRANSW(pcmpgtd, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtd);
|
||||
TRANSW(mpsadbh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_mpsadbh);
|
||||
TRANSW(pmaddubsh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_pmaddubsh);
|
||||
TRANSW(pmulhrsh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_pmulhrsh);
|
||||
TRANSW(phminposuh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_phminposuh);
|
||||
TRANSW(packuswh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_packuswh);
|
||||
TRANSW(fstoifs, 3, 3, 0, 3, 3, 0, S,S,S,0, alf1, _env_, gen_helper_fstoifs);
|
||||
TRANSW(fdtoifd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_fdtoifd);
|
||||
TRANSW(pfstoifs, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_pfstoifs);
|
||||
TRANSW(pfdtoifd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_fdtoifd);
|
||||
TRANSW(pfhadds, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfhadds);
|
||||
TRANSW(pfhsubs, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfhsubs);
|
||||
TRANSW(pfaddsubs, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfaddsubs);
|
||||
TRANSW(pminuw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminuw);
|
||||
TRANSW(pminsw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsw);
|
||||
TRANSW(pmaxuw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxuw);
|
||||
TRANSW(pmaxsw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsw);
|
||||
TRANSW(phaddh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddh);
|
||||
TRANSW(phaddw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddw);
|
||||
TRANSW(phaddsh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddsh);
|
||||
TRANSW(phsubh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubh);
|
||||
TRANSW(phsubw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubw);
|
||||
TRANSW(phsubsh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubsh);
|
||||
TRANSW(psignb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignb);
|
||||
TRANSW(psignh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignh);
|
||||
TRANSW(psignw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignw);
|
||||
|
||||
//puttst, 0, 0, 0, 3, 0, 0, D,0,D,0, alf12
|
||||
|
||||
//andd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//andnd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//ord_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//ornd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//xord_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//xornd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//addd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//subd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11
|
||||
//scld_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//scrd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//shld_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//shrd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//sard_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//incd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
//decd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21
|
||||
|
||||
TRANSC(pfhadd_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_ADD);
|
||||
TRANSC(pfhsub_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_ADD);
|
||||
TRANSC(pfaddsub_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_ADD);
|
||||
TRANSC(pfhadd_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_SUB);
|
||||
TRANSC(pfhsub_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_SUB);
|
||||
TRANSC(pfaddsub_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_SUB);
|
||||
TRANSC(pfadd_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_HADD);
|
||||
TRANSC(pfsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_HADD);
|
||||
TRANSC(pfhadd_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_HADD);
|
||||
TRANSC(pfhsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_HADD);
|
||||
TRANSC(pfmul_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_HADD);
|
||||
TRANSC(pfaddsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_HADD);
|
||||
TRANSC(pfadd_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_HSUB);
|
||||
TRANSC(pfsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_HSUB);
|
||||
TRANSC(pfhadd_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_HSUB);
|
||||
TRANSC(pfhsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_HSUB);
|
||||
TRANSC(pfmul_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_HSUB);
|
||||
TRANSC(pfaddsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_HSUB);
|
||||
TRANSC(pfhadd_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_RSUB);
|
||||
TRANSC(pfhsub_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_RSUB);
|
||||
TRANSC(pfaddsub_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_RSUB);
|
||||
TRANSC(pfadd_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_ADDSUB);
|
||||
TRANSC(pfsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_ADDSUB);
|
||||
TRANSC(pfhadd_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_ADDSUB);
|
||||
TRANSC(pfhsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_ADDSUB);
|
||||
TRANSC(pfmul_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_ADDSUB);
|
||||
TRANSC(pfaddsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_ADDSUB);
|
3
target/e2k/trans/alop-v4.c.inc
Normal file
3
target/e2k/trans/alop-v4.c.inc
Normal file
@ -0,0 +1,3 @@
|
||||
TRANSW(fscales, 0, 4, 0, 0, 4, 0, S,S,S,0, alf1, _env_, gen_helper_fscales);
|
||||
TRANSW(fscaled, 0, 4, 0, 0, 4, 0, D,D,S,0, alf1, _env_, gen_helper_fscaled);
|
||||
TRANSW(fxscalesx, 0, 4, 0, 0, 4, 0, X,X,S,0, alf1, _env_, gen_helper_fxscalesx);
|
239
target/e2k/trans/alop-v5.c.inc
Normal file
239
target/e2k/trans/alop-v5.c.inc
Normal file
@ -0,0 +1,239 @@
|
||||
//ldq, 5, 0, 5, 5, 0, 5, Q,D,D,0, alf1_mas, AF_PAIR
|
||||
TRANSM(ldqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_FLAT);
|
||||
TRANSM(ldcsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_CS);
|
||||
TRANSM(lddsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_DS);
|
||||
TRANSM(ldesqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_ES);
|
||||
TRANSM(ldfsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_FS);
|
||||
TRANSM(ldgsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_GS);
|
||||
TRANSM(ldssqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_SS);
|
||||
TRANSM(ldgdqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_GD);
|
||||
//ldcudqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas
|
||||
//ldapqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas
|
||||
TRANSM(stqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_FLAT);
|
||||
TRANSA(staaqp, 0, 0, 5, 0, 0, 5, P,0,0,0, alf10_mas, OP_STAAQP, gen_staaqp);
|
||||
TRANSM(stcsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_CS);
|
||||
TRANSM(stdsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_DS);
|
||||
TRANSM(stesqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_ES);
|
||||
TRANSM(stfsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_FS);
|
||||
TRANSM(stgsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_GS);
|
||||
TRANSM(stssqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_SS);
|
||||
TRANSM(stgdqp, 0, 0, 5, 0, 0, 5, P,S,S,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_GD);
|
||||
//stapqp, 0, 0, 5, 0, 0, 5, P,Q,S,0, alf3_mas
|
||||
TRANSM(stmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_FLAT);
|
||||
TRANSM(stcsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_CS);
|
||||
TRANSM(stdsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_DS);
|
||||
TRANSM(stesmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_ES);
|
||||
TRANSM(stfsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_FS);
|
||||
TRANSM(stgsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_GS);
|
||||
TRANSM(stssmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_SS);
|
||||
TRANSM(stgdmqp, 0, 0, 5, 0, 0, 5, P,S,S,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_GD);
|
||||
//stapmqp, 0, 0, 5, 0, 0, 5, P,Q,S,0, alf13_mas
|
||||
//ldrqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas
|
||||
//strqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas
|
||||
TRANSA(puttagqp, 5, 5, 0, 5, 5, 0, P,P,S,0, alf1, OP_PUTTAGQP, gen_puttagqp);
|
||||
|
||||
TRANSW(pmullw, 0, 5, 0, 0, 5, 0, D,D,D,0, alf1, _, gen_pmullw);
|
||||
TRANSW(psrcw, 5, 5, 0, 5, 5, 0, D,D,D,0, alf1, _, gen_psrcd);
|
||||
TRANSW(psrcd, 5, 5, 0, 5, 5, 0, D,D,D,0, alf1, _, gen_psrcw);
|
||||
|
||||
TRANSW(addcd, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_addcd);
|
||||
TRANSW(addcd_c, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_addcd_c);
|
||||
TRANSW(subcd, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_subcd);
|
||||
TRANSW(subcd_c, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_subcd_c);
|
||||
TRANSW(getfzs, 5, 5, 5, 5, 5, 5, S,S,S,0, alf1, _, gen_getfzs);
|
||||
TRANSW(getfzd, 5, 5, 5, 5, 5, 5, D,D,D,0, alf1, _, gen_getfzd);
|
||||
TRANSW(qpsrlw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrlw);
|
||||
TRANSW(qpsrlh, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrlh);
|
||||
TRANSW(qpsraw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsraw);
|
||||
TRANSW(qpsrah, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrah);
|
||||
TRANSW(qpsllw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsllw);
|
||||
TRANSW(qpsllh, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsllh);
|
||||
TRANSW(qpsrld, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrld);
|
||||
TRANSW(qpslld, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpslld);
|
||||
TRANSW(qpand, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpand);
|
||||
TRANSW(qpandn, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpandn);
|
||||
TRANSW(qpor, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpor);
|
||||
TRANSW(qpxor, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpxor);
|
||||
TRANSW(qpminuw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminuw);
|
||||
TRANSW(qpminsw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsw);
|
||||
TRANSW(qpmaxuw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxuw);
|
||||
TRANSW(qpmaxsw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsw);
|
||||
TRANSW(qpcmpeqd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqd);
|
||||
TRANSW(qphaddh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddh);
|
||||
TRANSW(qphaddw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddw);
|
||||
TRANSW(qphaddsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddsh);
|
||||
TRANSW(qpcmpgtd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtd);
|
||||
TRANSW(qphsubh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubh);
|
||||
TRANSW(qphsubw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubw);
|
||||
TRANSW(qphsubsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubsh);
|
||||
TRANSW(qpsrcw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrcw);
|
||||
TRANSW(qpsrcd, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrcd);
|
||||
TRANSW(qpmsk2sgnb, 5, 5, 0, 5, 5, 0, P,P,S,0, alf1, _, gen_helper_qpmsk2sgnb);
|
||||
TRANSW(qpsignb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignb);
|
||||
TRANSW(qpsignh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignh);
|
||||
TRANSW(qpsignw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignw);
|
||||
TRANSW(qpsgn2mskb, 5, 5, 0, 5, 5, 0, S,0,P,0, alf2, _, gen_helper_qpsgn2mskb);
|
||||
TRANSW(qppackdl, 5, 5, 0, 5, 5, 0, P,D,D,0, alf1, _, gen_qppackdl);
|
||||
TRANSW(qpswitchw, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _, gen_qpswitchw);
|
||||
TRANSW(qpswitchd, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _, gen_qpswitchd);
|
||||
TRANSW(qpminub, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminub);
|
||||
TRANSW(qpminsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsh);
|
||||
TRANSW(qpmaxub, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxub);
|
||||
TRANSW(qpmaxsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsh);
|
||||
TRANSW(qpminsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsb);
|
||||
TRANSW(qpminuh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminuh);
|
||||
TRANSW(qpmaxsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsb);
|
||||
TRANSW(qpmaxuh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxuh);
|
||||
TRANSW(qpacksshb, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpacksshb);
|
||||
TRANSW(qpaddb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddb);
|
||||
TRANSW(qpackushb, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpackushb);
|
||||
TRANSW(qpaddh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddh);
|
||||
TRANSW(qpacksswh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpacksswh);
|
||||
TRANSW(qpaddsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddsb);
|
||||
TRANSW(qpackuswh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpackuswh);
|
||||
TRANSW(qpaddsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddsh);
|
||||
TRANSW(qpaddusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddusb);
|
||||
TRANSW(qpaddush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddush);
|
||||
TRANSW(qpaddw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddw);
|
||||
TRANSW(qpaddd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddd);
|
||||
TRANSW(qpsubb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubb);
|
||||
TRANSW(qpsubh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubh);
|
||||
TRANSW(qpsubsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubsb);
|
||||
TRANSW(qpsubsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubsh);
|
||||
TRANSW(qpsubusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubusb);
|
||||
TRANSW(qpsubush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubush);
|
||||
TRANSW(qpsubw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubw);
|
||||
TRANSW(qpsubd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubd);
|
||||
TRANSW(qpcmpeqb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqb);
|
||||
TRANSW(qpmulhh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhh);
|
||||
TRANSW(qpcmpeqh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqh);
|
||||
TRANSW(qpmullh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmullh);
|
||||
TRANSW(qpcmpeqw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqw);
|
||||
TRANSW(qpmaddh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmaddh);
|
||||
TRANSW(qpcmpgtb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtb);
|
||||
TRANSW(qpmulhuh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhuh);
|
||||
TRANSW(qpcmpgth, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgth);
|
||||
TRANSW(qpsadbw, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpsadbw);
|
||||
TRANSW(qpcmpgtw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtw);
|
||||
TRANSW(qpmulubhh, 0, 5, 0, 0, 5, 0, P,D,P,0, alf1, _, gen_helper_qpmulubhh);
|
||||
TRANSW(qpavgusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpavgusb);
|
||||
TRANSW(qpmullw, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmullw);
|
||||
TRANSW(qpavgush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpavgush);
|
||||
TRANSW(qpmaddubsh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmaddubsh);
|
||||
TRANSW(qpmulhrsh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhrsh);
|
||||
TRANSW(qphminposuh, 0, 5, 0, 0, 5, 0, D,P,P,0, alf1, _, gen_helper_qphminposuh);
|
||||
TRANSW(qpmpsadbh, 0, 5, 0, 0, 5, 0, P,P,S,0, alf1, _, gen_helper_qpmpsadbh);
|
||||
TRANSW(qpfstois, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfstois);
|
||||
TRANSW(qpfstoistr, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfstoistr);
|
||||
TRANSW(qpistofs, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpistofs);
|
||||
TRANSW(qpfstoid, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstoid);
|
||||
TRANSW(qpfstoidtr, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstoidtr);
|
||||
TRANSW(qpistofd, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpistofd);
|
||||
TRANSW(qpfstofd, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstofd);
|
||||
TRANSW(qpfdtois, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtois);
|
||||
TRANSW(qpfdtoistr, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtoistr);
|
||||
TRANSW(qpidtofs, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpidtofs);
|
||||
TRANSW(qpfdtofs, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtofs);
|
||||
TRANSW(qpfdtoid, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfdtoid);
|
||||
TRANSW(qpfdtoidtr, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfdtoidtr);
|
||||
TRANSW(qpidtofd, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpidtofd);
|
||||
TRANSW(qpfstoifs, 5, 5, 0, 5, 5, 0, P,D,P,0, alf1, _env_, gen_qpfstoifs);
|
||||
TRANSW(qpfdtoifd, 5, 5, 0, 5, 5, 0, P,D,P,0, alf1, _env_, gen_qpfdtoifd);
|
||||
TRANSW(qpfadds, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfadds);
|
||||
TRANSW(qpfaddd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddd);
|
||||
TRANSW(qpfsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfsubs);
|
||||
TRANSW(qpfsubd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfsubd);
|
||||
TRANSW(qpfmins, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmins);
|
||||
TRANSW(qpfmind, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmind);
|
||||
TRANSW(qpfmaxs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmaxs);
|
||||
TRANSW(qpfmaxd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmaxd);
|
||||
TRANSW(qpfmuls, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfmuls);
|
||||
TRANSW(qpfmuld, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfmuld);
|
||||
TRANSW(qpfcmpeqs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpeqs);
|
||||
TRANSW(qpfcmplts, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmplts);
|
||||
TRANSW(qpfcmples, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmples);
|
||||
TRANSW(qpfcmpuods, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpuods);
|
||||
TRANSW(qpfcmpneqs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpneqs);
|
||||
TRANSW(qpfcmpnlts, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnlts);
|
||||
TRANSW(qpfcmpnles, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnles);
|
||||
TRANSW(qpfcmpods, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpods);
|
||||
TRANSW(qpfcmpeqd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpeqd);
|
||||
TRANSW(qpfcmpltd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpltd);
|
||||
TRANSW(qpfcmpled, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpled);
|
||||
TRANSW(qpfcmpuodd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpuodd);
|
||||
TRANSW(qpfcmpneqd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpneqd);
|
||||
TRANSW(qpfcmpnltd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnltd);
|
||||
TRANSW(qpfcmpnled, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnled);
|
||||
TRANSW(qpfcmpodd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpodd);
|
||||
TRANSW(qpfhadds, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_helper_qpfhadds);
|
||||
TRANSW(qpfhsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_helper_qpfhsubs);
|
||||
TRANSW(qpfaddsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddsubs);
|
||||
TRANSW(qpfaddsubd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddsubd);
|
||||
//plog_and, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS
|
||||
//plog_xor, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS
|
||||
//plog_sel3, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS
|
||||
//plog_mjr, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS
|
||||
//plog_or, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS
|
||||
TRANSW(plog, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21_log, _, gen_plog);
|
||||
//qplog_and, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS
|
||||
//qplog_xor, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS
|
||||
//qplog_sel3, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS
|
||||
//qplog_mjr, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS
|
||||
//qplog_or, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS
|
||||
TRANSW(qplog, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_log, _, gen_qplog);
|
||||
TRANSW(qppermb, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_helper_qppermb);
|
||||
TRANSW(qpshufb, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_helper_qpshufb);
|
||||
TRANSW(qpmerge, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_qpmerge);
|
||||
|
||||
TRANSC(qpfadd_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(qpfadd_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_ADD);
|
||||
TRANSC(qpfsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(qpfsub_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_ADD);
|
||||
TRANSC(qpfhadd_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_ADD);
|
||||
TRANSC(qpfhsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_ADD);
|
||||
TRANSC(qpfmul_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(qpfmul_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_ADD);
|
||||
TRANSC(qpfaddsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_ADD);
|
||||
TRANSC(qpfaddsub_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_ADD);
|
||||
TRANSC(qpfadd_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(qpfadd_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_SUB);
|
||||
TRANSC(qpfsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(qpfsub_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_SUB);
|
||||
TRANSC(qpfhadd_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_SUB);
|
||||
TRANSC(qpfhsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_SUB);
|
||||
TRANSC(qpfmul_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(qpfmul_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_SUB);
|
||||
TRANSC(qpfaddsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_SUB);
|
||||
TRANSC(qpfaddsub_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_SUB);
|
||||
TRANSC(qpfadd_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_HADD);
|
||||
TRANSC(qpfsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_HADD);
|
||||
TRANSC(qpfhadd_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_HADD);
|
||||
TRANSC(qpfhsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_HADD);
|
||||
TRANSC(qpfmul_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_HADD);
|
||||
TRANSC(qpfaddsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_HADD);
|
||||
TRANSC(qpfadd_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_HSUB);
|
||||
TRANSC(qpfsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_HSUB);
|
||||
TRANSC(qpfhadd_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_HSUB);
|
||||
TRANSC(qpfhsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_HSUB);
|
||||
TRANSC(qpfmul_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_HSUB);
|
||||
TRANSC(qpfaddsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_HSUB);
|
||||
TRANSC(qpfadd_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(qpfadd_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_RSUB);
|
||||
TRANSC(qpfsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_RSUB);
|
||||
TRANSC(qpfsub_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_RSUB);
|
||||
TRANSC(qpfhadd_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_RSUB);
|
||||
TRANSC(qpfhsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_RSUB);
|
||||
TRANSC(qpfmul_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_RSUB);
|
||||
TRANSC(qpfmul_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_RSUB);
|
||||
TRANSC(qpfaddsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_RSUB);
|
||||
TRANSC(qpfaddsub_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_RSUB);
|
||||
TRANSC(qpfadd_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_ADDSUB);
|
||||
TRANSC(qpfadd_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_ADDSUB);
|
||||
TRANSC(qpfsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_ADDSUB);
|
||||
TRANSC(qpfsub_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_ADDSUB);
|
||||
TRANSC(qpfhadd_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_ADDSUB);
|
||||
TRANSC(qpfhsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_ADDSUB);
|
||||
TRANSC(qpfmul_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_ADDSUB);
|
||||
TRANSC(qpfmul_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_ADDSUB);
|
||||
TRANSC(qpfaddsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_ADDSUB);
|
||||
TRANSC(qpfaddsub_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_ADDSUB);
|
66
target/e2k/trans/alop-v6.c.inc
Normal file
66
target/e2k/trans/alop-v6.c.inc
Normal file
@ -0,0 +1,66 @@
|
||||
//vfbgv, 0, 6, 0, 0, 6, 0, S,S,S,0, alf1
|
||||
//modbgv, 0, 6, 0, 0, 6, 0, S,0,S,0, alf2
|
||||
//mkfsw, 0, 6, 0, 0, 6, 0, D,S,S,0, alf1
|
||||
TRANSD(ibranchd, 6, 0, 0, 0, 0, 0, D,0,D,0, alf2, gen_ibranchd);
|
||||
TRANSD(icalld, 6, 0, 0, 0, 0, 0, D,0,D,0, alf2_icalld, gen_icalld);
|
||||
TRANSD(pmrgp, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, gen_merged);
|
||||
TRANSD(qpmrgp, 6, 6, 0, 6, 6, 0, P,P,P,0, alf1, gen_qpmrgp);
|
||||
TRANSW(qpsrad, 6, 6, 0, 6, 6, 0, P,P,D,0, alf1, _, gen_qpsrad);
|
||||
TRANSW(pcmpeqbop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqbop);
|
||||
TRANSW(pcmpeqhop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqhop);
|
||||
TRANSW(pcmpeqwop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqwop);
|
||||
TRANSW(pcmpeqdop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqdop);
|
||||
TRANSW(pcmpgtbop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtbop);
|
||||
TRANSW(pcmpgthop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgthop);
|
||||
TRANSW(pcmpgtwop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtwop);
|
||||
TRANSW(pcmpgtdop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtdop);
|
||||
TRANSW(pcmpeqbap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqbap);
|
||||
TRANSW(pcmpeqhap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqhap);
|
||||
TRANSW(pcmpeqwap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqwap);
|
||||
TRANSW(pcmpeqdap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqdap);
|
||||
TRANSW(pcmpgtbap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtbap);
|
||||
TRANSW(pcmpgthap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgthap);
|
||||
TRANSW(pcmpgtwap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtwap);
|
||||
TRANSW(pcmpgtdap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtdap);
|
||||
TRANSW(qpcmpeqbop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqbop);
|
||||
TRANSW(qpcmpeqhop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqhop);
|
||||
TRANSW(qpcmpeqwop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqwop);
|
||||
TRANSW(qpcmpeqdop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqdop);
|
||||
TRANSW(qpcmpgtbop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtbop);
|
||||
TRANSW(qpcmpgthop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgthop);
|
||||
TRANSW(qpcmpgtwop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtwop);
|
||||
TRANSW(qpcmpgtdop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtdop);
|
||||
TRANSW(qpcmpeqbap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqbap);
|
||||
TRANSW(qpcmpeqhap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqhap);
|
||||
TRANSW(qpcmpeqwap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqwap);
|
||||
TRANSW(qpcmpeqdap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqdap);
|
||||
TRANSW(qpcmpgtbap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtbap);
|
||||
TRANSW(qpcmpgthap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgthap);
|
||||
TRANSW(qpcmpgtwap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtwap);
|
||||
TRANSW(qpcmpgtdap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtdap);
|
||||
TRANSW(qpcext_0x00, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x00);
|
||||
TRANSW(qpcext_0x7f, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x7f);
|
||||
TRANSW(qpcext_0x80, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x80);
|
||||
TRANSW(qpcext_0xff, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0xff);
|
||||
TRANSW(fmas, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fmas);
|
||||
TRANSW(fmad, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fmad);
|
||||
TRANSW(fmss, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fmss);
|
||||
TRANSW(fmsd, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fmsd);
|
||||
TRANSW(fnmas, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fnmas);
|
||||
TRANSW(fnmad, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fnmad);
|
||||
TRANSW(fnmss, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fnmss);
|
||||
TRANSW(fnmsd, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fnmsd);
|
||||
TRANSW(qpfmas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmas);
|
||||
TRANSW(qpfmad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmad);
|
||||
TRANSW(qpfmss, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmss);
|
||||
TRANSW(qpfmsd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsd);
|
||||
TRANSW(qpfnmas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmas);
|
||||
TRANSW(qpfnmad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmad);
|
||||
TRANSW(qpfnmss, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmss);
|
||||
TRANSW(qpfnmsd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmsd);
|
||||
TRANSW(qpfmass, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmass);
|
||||
TRANSW(qpfmasd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmasd);
|
||||
TRANSW(qpfmsas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsas);
|
||||
TRANSW(qpfmsad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsad);
|
||||
TRANSW(clmull, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, _, gen_helper_clmull);
|
||||
TRANSW(clmulh, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, _, gen_helper_clmulh);
|
40
target/e2k/trans/alop-v7.c.inc
Normal file
40
target/e2k/trans/alop-v7.c.inc
Normal file
@ -0,0 +1,40 @@
|
||||
//qpmgme, 7, 0, 0, 0, 0, 0, P,P,P,P, alf21
|
||||
//qpaesltr, 0, 7, 0, 0, 0, 0, P,P,P,P, alf21
|
||||
//qpaesiltr, 0, 7, 0, 0, 0, 0, P,P,P,P, alf21
|
||||
//qpkuzltr, 0, 7, 0, 0, 0, 0, P,0,P,0, alf12
|
||||
//qpsbgltrlo, 0, 7, 0, 0, 0, 0, P,P,P,0, alf11
|
||||
//qpsbgltrhi, 0, 7, 0, 0, 0, 0, P,P,P,0, alf11
|
||||
//qpaesebgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21
|
||||
//qpaesdbgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21
|
||||
//qpcm2b, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12
|
||||
//qpcm2h, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12
|
||||
//qpcm2w, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12
|
||||
//qpcm2d, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12
|
||||
//qpkuzebgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21
|
||||
//qps2cmh, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2cmw, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2cmd, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2mb, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2mh, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2mw, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
//qps2md, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11
|
||||
TRANSW(qpackhbss, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackhbss);
|
||||
TRANSW(qpackhbus, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackhbus);
|
||||
TRANSW(qpackwhss, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackwhss);
|
||||
TRANSW(qpackwhus, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackwhus);
|
||||
//qpfstobf, 7, 7, 0, 7, 7, 0, P,P,P,0, alf11
|
||||
//qpidotsbwss, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qpidotsbwus, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qpidotsbwuu, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qpidotshwss, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qpbfdots, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_0, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_1, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_2, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_3, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_4, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_5, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_6, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qptbl_7, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21
|
||||
//qpinss, 7, 7, 0, 7, 7, 0, P,P,S,P, alf21_lt3
|
||||
//qpinsd, 7, 7, 0, 7, 7, 0, P,P,D,P, alf21_lt3
|
@ -513,10 +513,12 @@ typedef struct DisasContext {
|
||||
UnpackedBundle bundle;
|
||||
Cs0 cs0;
|
||||
Cs1 cs1;
|
||||
int cur_alop;
|
||||
Alop alops[6];
|
||||
target_ulong pc;
|
||||
int mmuidx;
|
||||
bool loop_mode;
|
||||
bool only_check;
|
||||
|
||||
TCGv_i32 lp[7];
|
||||
|
||||
@ -3760,38 +3762,30 @@ IMPL_GEN_ALOPF2_ENV_QQ(gen_qpfdtoid, gen_helper_fdtoid)
|
||||
IMPL_GEN_ALOPF2_ENV_QQ(gen_qpfdtoidtr, gen_helper_fdtoidtr)
|
||||
IMPL_GEN_ALOPF2_ENV_QQ(gen_qpidtofd, gen_helper_idtofd)
|
||||
|
||||
#define IMPL_GEN_PLOG(name, base) \
|
||||
static void name(TCGv_i64 ret, uint32_t table, TCGv_i64 s1, \
|
||||
TCGv_i64 s2, TCGv_i64 s3) \
|
||||
{ \
|
||||
TCGv_i32 t0 = tcg_constant_i32(base + table); \
|
||||
gen_helper_plog(ret, t0, s1, s2, s3); \
|
||||
}
|
||||
static void gen_plog(TCGv_i64 ret, uint32_t table, TCGv_i64 s1,
|
||||
TCGv_i64 s2, TCGv_i64 s3)
|
||||
{
|
||||
TCGv_i32 t0 = tcg_constant_i32(table);
|
||||
gen_helper_plog(ret, t0, s1, s2, s3);
|
||||
}
|
||||
|
||||
IMPL_GEN_PLOG(gen_plog_0x00, 0x00)
|
||||
IMPL_GEN_PLOG(gen_plog_0x80, 0x80)
|
||||
static void gen_qplog(TCGv_i128 ret, uint32_t opc, TCGv_i128 s1,
|
||||
TCGv_i128 s2, TCGv_i128 s3)
|
||||
{
|
||||
TCGv_i64 t0 = tcg_temp_new_i64();
|
||||
TCGv_i64 t1 = tcg_temp_new_i64();
|
||||
TCGv_i64 t2 = tcg_temp_new_i64();
|
||||
TCGv_i64 t3 = tcg_temp_new_i64();
|
||||
TCGv_i64 t4 = tcg_temp_new_i64();
|
||||
TCGv_i64 t5 = tcg_temp_new_i64();
|
||||
|
||||
#define IMPL_GEN_ALOPF21_LOG_QQQQ(name, op) \
|
||||
static void name(TCGv_i128 ret, uint32_t opc, TCGv_i128 s1, \
|
||||
TCGv_i128 s2, TCGv_i128 s3) \
|
||||
{ \
|
||||
TCGv_i64 t0 = tcg_temp_new_i64(); \
|
||||
TCGv_i64 t1 = tcg_temp_new_i64(); \
|
||||
TCGv_i64 t2 = tcg_temp_new_i64(); \
|
||||
TCGv_i64 t3 = tcg_temp_new_i64(); \
|
||||
TCGv_i64 t4 = tcg_temp_new_i64(); \
|
||||
TCGv_i64 t5 = tcg_temp_new_i64(); \
|
||||
\
|
||||
gen_qpunpackdl(t0, t1, s1); \
|
||||
gen_qpunpackdl(t2, t3, s2); \
|
||||
gen_qpunpackdl(t4, t5, s3); \
|
||||
op(t0, opc, t0, t2, t4); \
|
||||
op(t1, opc, t1, t3, t5); \
|
||||
gen_qppackdl(ret, t0, t1); \
|
||||
}
|
||||
|
||||
IMPL_GEN_ALOPF21_LOG_QQQQ(gen_qplog_0x00, gen_plog_0x00)
|
||||
IMPL_GEN_ALOPF21_LOG_QQQQ(gen_qplog_0x80, gen_plog_0x80)
|
||||
gen_qpunpackdl(t0, t1, s1);
|
||||
gen_qpunpackdl(t2, t3, s2);
|
||||
gen_qpunpackdl(t4, t5, s3);
|
||||
gen_plog(t0, opc, t0, t2, t4);
|
||||
gen_plog(t1, opc, t1, t3, t5);
|
||||
gen_qppackdl(ret, t0, t1);
|
||||
}
|
||||
|
||||
#define IMPL_GEN_ALOPF7_QQB(name, op1, op2) \
|
||||
static void name(TCGv_i64 ret, TCGv_i128 s1, TCGv_i128 s2) \
|
||||
@ -4583,7 +4577,7 @@ static void gen_staad(Alop *alop)
|
||||
}
|
||||
}
|
||||
|
||||
static void gen_staaw(Alop *alop, MemOp memop)
|
||||
static void gen_staaw_(Alop *alop, MemOp memop)
|
||||
{
|
||||
DisasContext *ctx = alop->ctx;
|
||||
uint8_t mas = alop->mas;
|
||||
@ -4635,6 +4629,21 @@ static void gen_staaw(Alop *alop, MemOp memop)
|
||||
}
|
||||
}
|
||||
|
||||
static void gen_staab(Alop *alop)
|
||||
{
|
||||
gen_staaw_(alop, MO_8);
|
||||
}
|
||||
|
||||
static void gen_staah(Alop *alop)
|
||||
{
|
||||
gen_staaw_(alop, MO_16);
|
||||
}
|
||||
|
||||
static void gen_staaw(Alop *alop)
|
||||
{
|
||||
gen_staaw_(alop, MO_32);
|
||||
}
|
||||
|
||||
#define IMPL_ALOPF1_BASIC(name, R, S1, S2, T, code) \
|
||||
static void glue3(name, _, glue3(R, S1, S2))(Alop *alop, T) \
|
||||
{ \
|
||||
@ -4750,7 +4759,7 @@ static void gen_staaw(Alop *alop, MemOp memop)
|
||||
#define IMPL_ALOPF21_LOG(name, R, S1, S2, S3) \
|
||||
IMPL_ALOPF21_BASIC(name, R, S1, S2, S3, \
|
||||
void (*op)(temp(R), uint32_t, temp(S1), temp(S2), temp(S3)), \
|
||||
{ (*op)(r.val, alop->als.opc1, s1.val, s2.val, s3.val); })
|
||||
{ (*op)(r.val, ((alop->ales.opc2 & 1) << 7) | alop->als.opc1, s1.val, s2.val, s3.val); })
|
||||
|
||||
IMPL_ALOPF1(gen_alf1, s, s, s)
|
||||
IMPL_ALOPF1(gen_alf1, d, s, s)
|
||||
@ -4792,6 +4801,7 @@ IMPL_ALOPF1_ENV(gen_alf1_env, q, q, q)
|
||||
IMPL_ALOPF1_LIT8(gen_alf1_lit8, d, d, d)
|
||||
|
||||
IMPL_ALOPF2(gen_alf2, s, s)
|
||||
IMPL_ALOPF2(gen_alf2, d, s)
|
||||
IMPL_ALOPF2(gen_alf2, d, d)
|
||||
IMPL_ALOPF2(gen_alf2, s, x)
|
||||
IMPL_ALOPF2(gen_alf2, x, x)
|
||||
@ -5594,9 +5604,9 @@ static void gen_alop_simple(Alop *alop)
|
||||
case OP_PUTTAGS: gen_puttags(alop); break;
|
||||
case OP_PUTTAGD: gen_puttagd(alop); break;
|
||||
case OP_PUTTAGQP: gen_puttagqp(alop); break;
|
||||
case OP_STAAB: gen_staaw(alop, MO_8); break;
|
||||
case OP_STAAH: gen_staaw(alop, MO_16); break;
|
||||
case OP_STAAW: gen_staaw(alop, MO_32); break;
|
||||
case OP_STAAB: gen_staab(alop); break;
|
||||
case OP_STAAH: gen_staah(alop); break;
|
||||
case OP_STAAW: gen_staaw(alop); break;
|
||||
case OP_STAAD: gen_staad(alop); break;
|
||||
case OP_STAAQ: gen_staaq(alop); break;
|
||||
case OP_STAAQP: gen_staaqp(alop); break;
|
||||
@ -5835,10 +5845,10 @@ static void gen_alop_simple(Alop *alop)
|
||||
case OP_QPMERGE: gen_alf21_qqqq(alop, gen_qpmerge); break;
|
||||
case OP_QPSHUFB: gen_alf21_qqqq(alop, gen_helper_qpshufb); break;
|
||||
case OP_QPPERMB: gen_alf21_qqqq(alop, gen_helper_qppermb); break;
|
||||
case OP_PLOG_0x00: gen_alf21_log_dddd(alop, gen_plog_0x00); break;
|
||||
case OP_PLOG_0x80: gen_alf21_log_dddd(alop, gen_plog_0x80); break;
|
||||
case OP_QPLOG_0x00: gen_alf21_log_qqqq(alop, gen_qplog_0x00); break;
|
||||
case OP_QPLOG_0x80: gen_alf21_log_qqqq(alop, gen_qplog_0x80); break;
|
||||
case OP_PLOG_0x00:
|
||||
case OP_PLOG_0x80: gen_alf21_log_dddd(alop, gen_plog); break;
|
||||
case OP_QPLOG_0x00:
|
||||
case OP_QPLOG_0x80: gen_alf21_log_qqqq(alop, gen_qplog); break;
|
||||
case OP_FMAS: gen_alf21_env_ssss(alop, gen_helper_fmas); break;
|
||||
case OP_FMSS: gen_alf21_env_ssss(alop, gen_helper_fmss); break;
|
||||
case OP_FNMAS: gen_alf21_env_ssss(alop, gen_helper_fnmas); break;
|
||||
@ -6333,7 +6343,18 @@ static inline bool rlp_is_chan_pred(uint16_t rlp, int chan)
|
||||
return !extract16(rlp, 15, 1) && rlp_check_chan(rlp, chan);
|
||||
}
|
||||
|
||||
static void decode_alop(Alop *alop, AlesFlag ales_present)
|
||||
/* Include the auto-generated decoder for alops */
|
||||
#include "decode-alop.c.inc"
|
||||
|
||||
#include "trans/alop-v1.c.inc"
|
||||
#include "trans/alop-v2.c.inc"
|
||||
#include "trans/alop-v3.c.inc"
|
||||
#include "trans/alop-v4.c.inc"
|
||||
#include "trans/alop-v5.c.inc"
|
||||
#include "trans/alop-v6.c.inc"
|
||||
#include "trans/alop-v7.c.inc"
|
||||
|
||||
static void decode_alop_old(Alop *alop, AlesFlag ales_present)
|
||||
{
|
||||
DisasContext *ctx = alop->ctx;
|
||||
|
||||
@ -6552,6 +6573,23 @@ static void alop_find_max_reg_indices(Alop *alop, int *max_r_src,
|
||||
}
|
||||
}
|
||||
|
||||
static uint64_t alop_insn(Alop *alop)
|
||||
{
|
||||
uint64_t insn = 0;
|
||||
|
||||
/* ALES2/5 may be allocated but must not be used */
|
||||
bool ales_present = (alop->ctx->bundle.ales_present[alop->chan] & ALES_PRESENT) != 0;
|
||||
uint16_t ales = ales_present ? alop->ales.raw : 0;
|
||||
|
||||
insn = deposit64(insn, 0, 32, alop->als.raw);
|
||||
insn = deposit64(insn, 32, 16, ales);
|
||||
insn = deposit64(insn, 48, 3, alop->chan + (alop->chan >= 3));
|
||||
alop->mas = alop->ctx->cs1.type == CS1_MAS ? alop->ctx->cs1.mas[alop->chan] : 0;
|
||||
insn = deposit64(insn, 51, 7, alop->mas);
|
||||
insn = deposit64(insn, 63, 1, ales_present);
|
||||
return insn;
|
||||
}
|
||||
|
||||
static void decode_alops(DisasContext *ctx)
|
||||
{
|
||||
int i;
|
||||
@ -6568,11 +6606,16 @@ static void decode_alops(DisasContext *ctx)
|
||||
alop->result.kind = ALOP_RESULT_NONE;
|
||||
|
||||
if (ctx->bundle.als_present[i]) {
|
||||
ctx->cur_alop = i;
|
||||
|
||||
alop->mas = ctx->cs1.type == CS1_MAS ? ctx->cs1.mas[i] : 0;
|
||||
alop->als.raw = ctx->bundle.als[i];
|
||||
alop->ales.raw = ctx->bundle.ales[i];
|
||||
|
||||
decode_alop(alop, ctx->bundle.ales_present[i]);
|
||||
if (!decode_alop(ctx, alop_insn(alop))) {
|
||||
// fallback
|
||||
decode_alop_old(alop, ctx->bundle.ales_present[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6677,22 +6720,31 @@ static void gen_alop(Alop *alop)
|
||||
tcg_gen_brcondi_i32(TCG_COND_EQ, cond, 0, skip_op);
|
||||
}
|
||||
|
||||
switch (alop->format) {
|
||||
case ALOPF21_ICOMB:
|
||||
gen_icomb(alop);
|
||||
break;
|
||||
case ALOPF21_FCOMB:
|
||||
gen_fcomb(alop);
|
||||
break;
|
||||
case ALOPF21_PFCOMB:
|
||||
gen_pfcomb(alop);
|
||||
break;
|
||||
case ALOPF21_QPFCOMB:
|
||||
gen_qpfcomb(alop);
|
||||
break;
|
||||
default:
|
||||
gen_alop_simple(alop);
|
||||
break;
|
||||
ctx->cur_alop = alop->chan;
|
||||
if (!decode_alop(ctx, alop_insn(alop))) {
|
||||
// fallback
|
||||
switch (alop->format) {
|
||||
case ALOPF21_ICOMB:
|
||||
e2k_todo(ctx, "fallback icomb");
|
||||
gen_icomb(alop);
|
||||
break;
|
||||
case ALOPF21_FCOMB:
|
||||
e2k_todo(ctx, "fallback fcomb");
|
||||
gen_fcomb(alop);
|
||||
break;
|
||||
case ALOPF21_PFCOMB:
|
||||
e2k_todo(ctx, "fallback pfcomb");
|
||||
gen_pfcomb(alop);
|
||||
break;
|
||||
case ALOPF21_QPFCOMB:
|
||||
e2k_todo(ctx, "fallback qpfcomb");
|
||||
gen_qpfcomb(alop);
|
||||
break;
|
||||
default:
|
||||
e2k_todo(ctx, "fallback simple %s.%d", alop->name, alop->chan);
|
||||
gen_alop_simple(alop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (alop->result.kind) {
|
||||
@ -7412,10 +7464,12 @@ static target_ulong do_decode(DisasContext *ctx, CPUState *cs)
|
||||
return ctx->pc + 8;
|
||||
}
|
||||
|
||||
ctx->only_check = true;
|
||||
decode_ct_cond(ctx, &ctx->bundle);
|
||||
decode_cs1(ctx, &ctx->bundle);
|
||||
decode_cs0(ctx, &ctx->bundle);
|
||||
decode_alops(ctx);
|
||||
ctx->only_check = false;
|
||||
|
||||
return ctx->pc + len;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user