提交 da1a4cef 编写于 作者: P Petar Jovanovic 提交者: Aurelien Jarno

target-mips: Fix helper and tests for dot/cross-dot product instructions

Helper function for dpa_w_ph, dpax_w_ph, dps_w_ph and dpsx_w_ph incorrectly
defines halfword vector elements as unsigned values. This results in wrong
output which is not triggered in the tests as they also follow this logic.
Signed-off-by: NPetar Jovanovic <petarj@mips.com>
Reviewed-by: NEric Johnson <ericj@mips.com>
Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
上级 e320d05a
......@@ -2473,7 +2473,7 @@ DP_OB(dpsu_h_obr, 0, 24, 16, 8, 0, 24, 16, 8, 0);
void helper_##name(uint32_t ac, target_ulong rs, target_ulong rt, \
CPUMIPSState *env) \
{ \
uint16_t rsB, rsA, rtB, rtA; \
int16_t rsB, rsA, rtB, rtA; \
int32_t tempA, tempB; \
int64_t acc; \
\
......
......@@ -26,8 +26,8 @@ int main()
ach = 6, acl = 7;
rs = 0xFFFF00FF;
rt = 0xFFFF0002;
resulth = 0x05;
resultl = 0xfffe0206;
resulth = 0x06;
resultl = 0x206;
__asm
("mthi %0, $ac1\n\t"
"mtlo %1, $ac1\n\t"
......
......@@ -23,5 +23,22 @@ int main()
assert(ach == resulth);
assert(acl == resultl);
ach = 6, acl = 7;
rs = 0xFFFF00FF;
rt = 0xFFFF0002;
resulth = 0x05;
resultl = 0xFFFFFF06;
__asm
("mthi %0, $ac1\n\t"
"mtlo %1, $ac1\n\t"
"dpax.w.ph $ac1, %2, %3\n\t"
"mfhi %0, $ac1\n\t"
"mflo %1, $ac1\n\t"
: "+r"(ach), "+r"(acl)
: "r"(rs), "r"(rt)
);
assert(ach == resulth);
assert(acl == resultl);
return 0;
}
......@@ -23,5 +23,22 @@ int main()
assert(ach == resulth);
assert(acl == resultl);
ach = 6, acl = 7;
rs = 0xFFFF00FF;
rt = 0xFFFF0002;
resulth = 0x05;
resultl = 0xFFFFFE08;
__asm
("mthi %0, $ac1\n\t"
"mtlo %1, $ac1\n\t"
"dps.w.ph $ac1, %2, %3\n\t"
"mfhi %0, $ac1\n\t"
"mflo %1, $ac1\n\t"
: "+r"(ach), "+r"(acl)
: "r"(rs), "r"(rt)
);
assert(ach == resulth);
assert(acl == resultl);
return 0;
}
......@@ -9,8 +9,8 @@ int main()
rs = 0xBC0123AD;
rt = 0x01643721;
resulth = 0x04;
resultl = 0xD751F050;
resulth = 0x05;
resultl = 0xE72F050;
__asm
("mthi %0, $ac1\n\t"
"mtlo %1, $ac1\n\t"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册