Revision 7b239bec target-ppc/op_helper.c
b/target-ppc/op_helper.c | ||
---|---|---|
17 | 17 |
* License along with this library; if not, write to the Free Software |
18 | 18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA |
19 | 19 |
*/ |
20 |
#include <string.h> |
|
20 | 21 |
#include "exec.h" |
21 | 22 |
#include "host-utils.h" |
22 | 23 |
#include "helper.h" |
... | ... | |
2103 | 2104 |
VSL(w, u32) |
2104 | 2105 |
#undef VSL |
2105 | 2106 |
|
2107 |
void helper_vslo (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) |
|
2108 |
{ |
|
2109 |
int sh = (b->u8[LO_IDX*0xf] >> 3) & 0xf; |
|
2110 |
|
|
2111 |
#if defined (WORDS_BIGENDIAN) |
|
2112 |
memmove (&r->u8[0], &a->u8[sh], 16-sh); |
|
2113 |
memset (&r->u8[16-sh], 0, sh); |
|
2114 |
#else |
|
2115 |
memmove (&r->u8[sh], &a->u8[0], 16-sh); |
|
2116 |
memset (&r->u8[0], 0, sh); |
|
2117 |
#endif |
|
2118 |
} |
|
2119 |
|
|
2106 | 2120 |
#define VSR(suffix, element) \ |
2107 | 2121 |
void helper_vsr##suffix (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ |
2108 | 2122 |
{ \ |
... | ... | |
2121 | 2135 |
VSR(w, u32) |
2122 | 2136 |
#undef VSR |
2123 | 2137 |
|
2138 |
void helper_vsro (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) |
|
2139 |
{ |
|
2140 |
int sh = (b->u8[LO_IDX*0xf] >> 3) & 0xf; |
|
2141 |
|
|
2142 |
#if defined (WORDS_BIGENDIAN) |
|
2143 |
memmove (&r->u8[sh], &a->u8[0], 16-sh); |
|
2144 |
memset (&r->u8[0], 0, sh); |
|
2145 |
#else |
|
2146 |
memmove (&r->u8[0], &a->u8[sh], 16-sh); |
|
2147 |
memset (&r->u8[16-sh], 0, sh); |
|
2148 |
#endif |
|
2149 |
} |
|
2150 |
|
|
2124 | 2151 |
#undef VECTOR_FOR_INORDER_I |
2125 | 2152 |
#undef HI_IDX |
2126 | 2153 |
#undef LO_IDX |
Also available in: Unified diff