// By operating on unsigned integers we can store up to 4 squared diff in a // 32-bit element before having to widen to 64 bits.
uint32x4_t err = vmull_u16(vget_low_u16(diff0), vget_low_u16(diff0));
err = vmlal_u16(err, vget_high_u16(diff0), vget_high_u16(diff0));
err = vmlal_u16(err, vget_low_u16(diff1), vget_low_u16(diff1));
err = vmlal_u16(err, vget_high_u16(diff1), vget_high_u16(diff1));
err_u64 = vpadalq_u32(err_u64, err);
// We can't do the same here as we're operating on signed integers, so we // can only accumulate 2 squares.
int32x4_t ssz0 = vmull_s16(vget_low_s16(c0), vget_low_s16(c0));
ssz0 = vmlal_s16(ssz0, vget_high_s16(c0), vget_high_s16(c0));
ssz_s64 = vpadalq_s32(ssz_s64, ssz0);
// By operating on unsigned integers we can store up to 4 squared diff in a // 32-bit element before having to widen to 64 bits.
uint32x4_t err = vmull_u16(vget_low_u16(diff0), vget_low_u16(diff0));
err = vmlal_u16(err, vget_high_u16(diff0), vget_high_u16(diff0));
err = vmlal_u16(err, vget_low_u16(diff1), vget_low_u16(diff1));
err = vmlal_u16(err, vget_high_u16(diff1), vget_high_u16(diff1));
err_u64 = vpadalq_u32(err_u64, err);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.