mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 18:23:57 -06:00
target-ppc: Altivec 2.07: Add Vector Count Leading Zeroes
This patch adds the Vector Count Leading Zeroes instructions introduced in Power ISA Version 2.07 - vclzb, vclzh, vclzw and vclzd. Signed-off-by: Tom Musta <tommusta@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
953f0f5842
commit
f293f04ab5
3 changed files with 43 additions and 0 deletions
|
@ -1524,6 +1524,35 @@ VUPK(lsh, s32, s16, UPKLO)
|
|||
#undef UPKHI
|
||||
#undef UPKLO
|
||||
|
||||
#define VGENERIC_DO(name, element) \
|
||||
void helper_v##name(ppc_avr_t *r, ppc_avr_t *b) \
|
||||
{ \
|
||||
int i; \
|
||||
\
|
||||
VECTOR_FOR_INORDER_I(i, element) { \
|
||||
r->element[i] = name(b->element[i]); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define clzb(v) ((v) ? clz32((uint32_t)(v) << 24) : 8)
|
||||
#define clzh(v) ((v) ? clz32((uint32_t)(v) << 16) : 16)
|
||||
#define clzw(v) clz32((v))
|
||||
#define clzd(v) clz64((v))
|
||||
|
||||
VGENERIC_DO(clzb, u8)
|
||||
VGENERIC_DO(clzh, u16)
|
||||
VGENERIC_DO(clzw, u32)
|
||||
VGENERIC_DO(clzd, u64)
|
||||
|
||||
#undef clzb
|
||||
#undef clzh
|
||||
#undef clzw
|
||||
#undef clzd
|
||||
|
||||
|
||||
#undef VGENERIC_DO
|
||||
|
||||
|
||||
#undef VECTOR_FOR_INORDER_I
|
||||
#undef HI_IDX
|
||||
#undef LO_IDX
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue