Revision 07ef34c3
b/target-ppc/helper.h | ||
---|---|---|
137 | 137 |
DEF_HELPER_3(vmulosh, void, avr, avr, avr) |
138 | 138 |
DEF_HELPER_3(vmuloub, void, avr, avr, avr) |
139 | 139 |
DEF_HELPER_3(vmulouh, void, avr, avr, avr) |
140 |
DEF_HELPER_3(vsrab, void, avr, avr, avr) |
|
141 |
DEF_HELPER_3(vsrah, void, avr, avr, avr) |
|
142 |
DEF_HELPER_3(vsraw, void, avr, avr, avr) |
|
143 |
DEF_HELPER_3(vsrb, void, avr, avr, avr) |
|
144 |
DEF_HELPER_3(vsrh, void, avr, avr, avr) |
|
145 |
DEF_HELPER_3(vsrw, void, avr, avr, avr) |
|
140 | 146 |
|
141 | 147 |
DEF_HELPER_1(efscfsi, i32, i32) |
142 | 148 |
DEF_HELPER_1(efscfui, i32, i32) |
b/target-ppc/op_helper.c | ||
---|---|---|
2088 | 2088 |
#undef VMUL_DO |
2089 | 2089 |
#undef VMUL |
2090 | 2090 |
|
2091 |
#define VSR(suffix, element) \ |
|
2092 |
void helper_vsr##suffix (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ |
|
2093 |
{ \ |
|
2094 |
int i; \ |
|
2095 |
for (i = 0; i < ARRAY_SIZE(r->element); i++) { \ |
|
2096 |
unsigned int mask = ((1 << (3 + (sizeof (a->element[0]) >> 1))) - 1); \ |
|
2097 |
unsigned int shift = b->element[i] & mask; \ |
|
2098 |
r->element[i] = a->element[i] >> shift; \ |
|
2099 |
} \ |
|
2100 |
} |
|
2101 |
VSR(ab, s8) |
|
2102 |
VSR(ah, s16) |
|
2103 |
VSR(aw, s32) |
|
2104 |
VSR(b, u8) |
|
2105 |
VSR(h, u16) |
|
2106 |
VSR(w, u32) |
|
2107 |
#undef VSR |
|
2108 |
|
|
2091 | 2109 |
#undef VECTOR_FOR_INORDER_I |
2092 | 2110 |
#undef HI_IDX |
2093 | 2111 |
#undef LO_IDX |
b/target-ppc/translate.c | ||
---|---|---|
6219 | 6219 |
GEN_VXFORM(vmuleuh, 4, 9); |
6220 | 6220 |
GEN_VXFORM(vmulesb, 4, 12); |
6221 | 6221 |
GEN_VXFORM(vmulesh, 4, 13); |
6222 |
GEN_VXFORM(vsrb, 2, 8); |
|
6223 |
GEN_VXFORM(vsrh, 2, 9); |
|
6224 |
GEN_VXFORM(vsrw, 2, 10); |
|
6225 |
GEN_VXFORM(vsrab, 2, 12); |
|
6226 |
GEN_VXFORM(vsrah, 2, 13); |
|
6227 |
GEN_VXFORM(vsraw, 2, 14); |
|
6222 | 6228 |
|
6223 | 6229 |
/*** SPE extension ***/ |
6224 | 6230 |
/* Register moves */ |
Also available in: Unified diff