-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Medium
-
Code Generation Tools
-
CODEGEN-15070
-
-
-
C7000_NEXT
-
default
-
The attached test case has these lines ...
uchar64 computeAbsDiff(
const uchar64& i_Ref,
const uchar64& i_Act,
const cqSInt16 i_lightingOffset)
{
auto diff = [](
const uchar32 i_ref,
const uchar32 i_act,
const cqSInt16 i_lightingOffset)
{
const short32 short_ref = c7x::convert<short32>(i_ref);
const short32 short_act = c7x::convert<short32>(i_act);
return __abs(short_act - (short_ref + short32(i_lightingOffset)));
};
auto odd = diff(i_Ref.odd(), i_Act.odd(), i_lightingOffset);
auto even = diff(i_Ref.even(), i_Act.even(), i_lightingOffset);
return __pack_usat(odd, even);
}
The test case has surrounding code that supplies input, captures the result, then prints it. Running it under host emulation produces a different result than running on a C7x system.