trunk/src/emu/cpu/rsp/rspdrc.c
| r25440 | r25441 | |
| 276 | 276 | |
| 277 | 277 | #else |
| 278 | 278 | |
| 279 | | #define ACCUM_H(v, x) rsp->accum[((x))].w[3] |
| 280 | | #define ACCUM_M(v, x) rsp->accum[((x))].w[2] |
| 281 | | #define ACCUM_L(v, x) rsp->accum[((x))].w[1] |
| 279 | #define ACCUM_H(v, x) (UINT16)rsp->accum[x].w[3] |
| 280 | #define ACCUM_M(v, x) (UINT16)rsp->accum[x].w[2] |
| 281 | #define ACCUM_L(v, x) (UINT16)rsp->accum[x].w[1] |
| 282 | 282 | |
| 283 | | #define SET_ACCUM_H(v, x) ACCUM_H(-1, x) = v; |
| 284 | | #define SET_ACCUM_M(v, x) ACCUM_M(-1, x) = v; |
| 285 | | #define SET_ACCUM_L(v, x) ACCUM_L(-1, x) = v; |
| 283 | #define SET_ACCUM_H(v, x) rsp->accum[x].w[3] = v; |
| 284 | #define SET_ACCUM_M(v, x) rsp->accum[x].w[2] = v; |
| 285 | #define SET_ACCUM_L(v, x) rsp->accum[x].w[1] = v; |
| 286 | 286 | |
| 287 | 287 | #define SCALAR_GET_VS1(out, i) out = VREG_S(VS1REG, i) |
| 288 | 288 | #define SCALAR_GET_VS2(out, i) out = VREG_S(VS2REG, VEC_EL_2(EL, i)) |
| r25440 | r25441 | |
| 941 | 941 | #else |
| 942 | 942 | VREG_B(dest, index) = READ8(rsp, ea); |
| 943 | 943 | #endif |
| 944 | | |
| 945 | 944 | } |
| 946 | 945 | |
| 947 | 946 | static void cfunc_rsp_lsv(void *param) |
| r25440 | r25441 | |
| 2529 | 2528 | { |
| 2530 | 2529 | rsp_state *rsp = (rsp_state*)param; |
| 2531 | 2530 | int op = rsp->impstate->arg0; |
| 2531 | |
| 2532 | 2532 | // 31 25 24 20 15 10 5 0 |
| 2533 | 2533 | // ------------------------------------------------------ |
| 2534 | 2534 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 000111 | |
| r25440 | r25441 | |
| 2997 | 2997 | INT32 s1 = (UINT16)w1; |
| 2998 | 2998 | INT32 s2 = (INT32)(INT16)w2; |
| 2999 | 2999 | |
| 3000 | | INT64 q = (UINT64)ACCUM(i) & 0x000000000000ffffL; |
| 3000 | UINT64 q = (UINT64)ACCUM(i) & 0x000000000000ffffL; |
| 3001 | 3001 | q |= (((UINT64)ACCUM_L(rsp, i)) << 16); |
| 3002 | 3002 | q |= (((UINT64)ACCUM_M(rsp, i)) << 32); |
| 3003 | 3003 | q |= (((UINT64)ACCUM_H(rsp, i)) << 48); |
| r25440 | r25441 | |
| 3018 | 3018 | { |
| 3019 | 3019 | rsp_state *rsp = (rsp_state*)param; |
| 3020 | 3020 | int op = rsp->impstate->arg0; |
| 3021 | |
| 3021 | 3022 | // 31 25 24 20 15 10 5 0 |
| 3022 | 3023 | // ------------------------------------------------------ |
| 3023 | 3024 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 001111 | |
| r25440 | r25441 | |
| 3076 | 3077 | { |
| 3077 | 3078 | rsp_state *rsp = (rsp_state*)param; |
| 3078 | 3079 | int op = rsp->impstate->arg0; |
| 3080 | |
| 3079 | 3081 | // 31 25 24 20 15 10 5 0 |
| 3080 | 3082 | // ------------------------------------------------------ |
| 3081 | 3083 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010000 | |
| r25440 | r25441 | |
| 3127 | 3129 | { |
| 3128 | 3130 | rsp_state *rsp = (rsp_state*)param; |
| 3129 | 3131 | int op = rsp->impstate->arg0; |
| 3132 | |
| 3130 | 3133 | // 31 25 24 20 15 10 5 0 |
| 3131 | 3134 | // ------------------------------------------------------ |
| 3132 | 3135 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010001 | |
| r25440 | r25441 | |
| 3179 | 3182 | { |
| 3180 | 3183 | rsp_state *rsp = (rsp_state*)param; |
| 3181 | 3184 | int op = rsp->impstate->arg0; |
| 3185 | |
| 3182 | 3186 | // 31 25 24 20 15 10 5 0 |
| 3183 | 3187 | // ------------------------------------------------------ |
| 3184 | 3188 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010011 | |
| r25440 | r25441 | |
| 3235 | 3239 | { |
| 3236 | 3240 | rsp_state *rsp = (rsp_state*)param; |
| 3237 | 3241 | int op = rsp->impstate->arg0; |
| 3242 | |
| 3238 | 3243 | // 31 25 24 20 15 10 5 0 |
| 3239 | 3244 | // ------------------------------------------------------ |
| 3240 | 3245 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010100 | |
| r25440 | r25441 | |
| 3288 | 3293 | { |
| 3289 | 3294 | rsp_state *rsp = (rsp_state*)param; |
| 3290 | 3295 | int op = rsp->impstate->arg0; |
| 3296 | |
| 3291 | 3297 | // 31 25 24 20 15 10 5 0 |
| 3292 | 3298 | // ------------------------------------------------------ |
| 3293 | 3299 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010101 | |
| r25440 | r25441 | |
| 3351 | 3357 | { |
| 3352 | 3358 | rsp_state *rsp = (rsp_state*)param; |
| 3353 | 3359 | int op = rsp->impstate->arg0; |
| 3360 | |
| 3354 | 3361 | // 31 25 24 20 15 10 5 0 |
| 3355 | 3362 | // ------------------------------------------------------ |
| 3356 | 3363 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 011101 | |
| r25440 | r25441 | |
| 3404 | 3411 | { |
| 3405 | 3412 | rsp_state *rsp = (rsp_state*)param; |
| 3406 | 3413 | int op = rsp->impstate->arg0; |
| 3414 | |
| 3407 | 3415 | //int i; |
| 3408 | 3416 | // 31 25 24 20 15 10 5 0 |
| 3409 | 3417 | // ------------------------------------------------------ |
| r25440 | r25441 | |
| 4206 | 4214 | { |
| 4207 | 4215 | rsp_state *rsp = (rsp_state*)param; |
| 4208 | 4216 | int op = rsp->impstate->arg0; |
| 4217 | |
| 4209 | 4218 | // 31 25 24 20 15 10 5 0 |
| 4210 | 4219 | // ------------------------------------------------------ |
| 4211 | 4220 | // | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 100111 | |
| r25440 | r25441 | |
| 4601 | 4610 | { |
| 4602 | 4611 | rsp_state *rsp = (rsp_state*)param; |
| 4603 | 4612 | int op = rsp->impstate->arg0; |
| 4613 | |
| 4604 | 4614 | // 31 25 24 20 15 10 5 0 |
| 4605 | 4615 | // ------------------------------------------------------ |
| 4606 | 4616 | // | 010010 | 1 | EEEE | SSSSS | ?FFFF | DDDDD | 110010 | |