comparison mc-code-spu.c @ 716:21f770a3b298

*** empty log message ***
author kono
date Fri, 16 Nov 2007 21:46:20 +0900
parents 83e18db76c96
children c1542a2482b1
comparison
equal deleted inserted replaced
715:83e18db76c96 716:21f770a3b298
248 248
249 static void jcond(int l, int cond); 249 static void jcond(int l, int cond);
250 250
251 #define ARG_LVAR_OFFSET 0x10000000 251 #define ARG_LVAR_OFFSET 0x10000000
252 252
253 #define round16(i) ((i+0xf)&~0xf) 253 #define round16(i) align(i,16)
254 #define round4(i) ((i+3)&~3) 254 #define round4(i) align(i,4)
255 255
256 /* 256 /*
257 257
258 r0 return value etc. 258 r0 return value etc.
259 r0,r1 return value. (dpcmp return value on $2) 259 r0,r1 return value. (dpcmp return value on $2)
450 size_of_short = SIZE_OF_SHORT; 450 size_of_short = SIZE_OF_SHORT;
451 size_of_float = SIZE_OF_FLOAT; 451 size_of_float = SIZE_OF_FLOAT;
452 size_of_double = SIZE_OF_DOUBLE; 452 size_of_double = SIZE_OF_DOUBLE;
453 size_of_longlong = SIZE_OF_LONGLONG; 453 size_of_longlong = SIZE_OF_LONGLONG;
454 endian = ENDIAN; 454 endian = ENDIAN;
455 struct_align = 16;
455 init_src = init_src0; 456 init_src = init_src0;
456 457
457 } 458 }
458 459
459 extern void 460 extern void
2489 for(;arg_assign;arg_assign=cadr(arg_assign)) { 2490 for(;arg_assign;arg_assign=cadr(arg_assign)) {
2490 g_expr_u(car(arg_assign)); 2491 g_expr_u(car(arg_assign));
2491 } 2492 }
2492 clear_ptr_cache(); 2493 clear_ptr_cache();
2493 code_call(e2,fn,jmp); 2494 code_call(e2,fn,jmp);
2494 for(;reg_arg_list;reg_arg_list=cadr(reg_arg_list)) { 2495 free_register_var(reg_arg_list);
2495 arg = car(reg_arg_list);
2496 if (car(arg)==REGISTER||car(arg)==DREGISTER||car(arg)==FREGISTER
2497 ||car(arg)==LREGISTER)
2498 free_register(cadr(arg));
2499 else if (car(arg)==LVAR&&cadr(arg)<0) free_lvar(cadr(arg));
2500 }
2501 for(i=1;i<MAX_INPUT_REGISTER_VAR;i++) { 2496 for(i=1;i<MAX_INPUT_REGISTER_VAR;i++) {
2502 free_register(i); 2497 free_register(i);
2503 } 2498 }
2504 if (ret_type==DOUBLE) { 2499 if (ret_type==DOUBLE) {
2505 #if FLOAT_CODE 2500 #if FLOAT_CODE
3376 printf(".globl %s\n",n); 3371 printf(".globl %s\n",n);
3377 */ 3372 */
3378 } 3373 }
3379 3374
3380 void 3375 void
3381 align(int t) 3376 code_align(int t)
3382 { 3377 {
3383 int d; 3378 int d;
3384 switch(t) { 3379 switch(t) {
3385 case CHAR: case UCHAR: return; 3380 case CHAR: case UCHAR: return;
3386 case SHORT: case USHORT: d = data_alignment & 1; break; 3381 case SHORT: case USHORT: d = data_alignment & 1; break;