e2k: Add phminposuh instr.

This commit is contained in:
Denis Drakhnia 2021-01-16 16:47:54 +02:00 committed by Denis Drakhnia
parent 2e0f2dce66
commit d2b6bb3f9c
3 changed files with 22 additions and 1 deletions

View File

@ -130,6 +130,7 @@ DEF_HELPER_3(pshufw, i64, i64, i64, i32)
DEF_HELPER_2(psadbw, i64, i64, i64)
DEF_HELPER_2(pavgusb, i64, i64, i64)
DEF_HELPER_2(pavgush, i64, i64, i64)
DEF_HELPER_2(phminposuh, i64, i64, i64)
/* Float 32/64 Ops */
#define DEF_HELPER_3_32_64(name) \

View File

@ -319,3 +319,23 @@ uint64_t HELPER(pshufw)(uint64_t src1, uint64_t src2, uint32_t imm8)
}
return dst.ud[0];
}
uint64_t HELPER(phminposuh)(uint64_t src1, uint64_t src2)
{
int i;
vec64 s1 = { .ud[0] = src1 }, s2 = { .ud[0] = src2 }, dst = { .ud[0] = 0 };
dst.uh[0] = s1.uh[0];
for (i = 0; i < 4; i++) {
if (s1.uh[i] < dst.uh[0]) {
dst.uh[0] = s1.uh[i];
dst.uh[1] = i;
}
}
for (i = 0; i < 4; i++) {
if (s2.uh[i] < dst.uh[0]) {
dst.uh[0] = s2.uh[i];
dst.uh[1] = 4 + i;
}
}
return dst.ud[0];
}

View File

@ -3148,6 +3148,7 @@ static void gen_op(DisasContext *ctx, Instr *instr)
case OP_PUNPCKHBH: gen_alopf1_ddd(instr, gen_helper_punpckhbh); break;
case OP_PUNPCKHHW: gen_alopf1_ddd(instr, gen_helper_punpckhhw); break;
case OP_PUNPCKHWD: gen_alopf1_ddd(instr, gen_helper_punpckhwd); break;
case OP_PHMINPOSUH: gen_alopf1_ddd(instr, gen_helper_phminposuh); break;
case OP_GETTAGS: gen_gettag_i32(instr); break;
case OP_GETTAGD: gen_gettag_i64(instr); break;
case OP_PUTTAGS: gen_puttag_i32(instr); break;
@ -3444,7 +3445,6 @@ static void gen_op(DisasContext *ctx, Instr *instr)
case OP_PFADDSUBS:
case OP_PFSTOIFS:
case OP_PFDTOIFD:
case OP_PHMINPOSUH:
case OP_PUTTST:
case OP_FSCALES:
case OP_FSCALED: