Mercurial > hg > CbC > old > device
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; |