@@ -285,10 +285,10 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler)
285
285
ORC_ASM_CODE (compiler ," int var%d;\n" , i );
286
286
break ;
287
287
case ORC_VAR_TYPE_SRC :
288
- ORC_ASM_CODE (compiler ," const unsigned char * restrict var %d;\n" , i );
288
+ ORC_ASM_CODE (compiler ," const unsigned char * restrict ptr %d;\n" , i );
289
289
break ;
290
290
case ORC_VAR_TYPE_DEST :
291
- ORC_ASM_CODE (compiler ," unsigned char * restrict var %d;\n" , i );
291
+ ORC_ASM_CODE (compiler ," unsigned char * restrict ptr %d;\n" , i );
292
292
break ;
293
293
case ORC_VAR_TYPE_ACCUMULATOR :
294
294
ORC_ASM_CODE (compiler ," int var%d = 0;\n" , i );
@@ -335,19 +335,19 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler)
335
335
switch (var -> vartype ) {
336
336
case ORC_VAR_TYPE_SRC :
337
337
if (!(compiler -> target_flags & ORC_TARGET_C_NOEXEC )) {
338
- ORC_ASM_CODE (compiler ," var %d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n" ,
338
+ ORC_ASM_CODE (compiler ," ptr %d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n" ,
339
339
i , i , i );
340
340
} else {
341
- ORC_ASM_CODE (compiler ," var %d = ORC_PTR_OFFSET(%s, %s_stride * j);\n" ,
341
+ ORC_ASM_CODE (compiler ," ptr %d = ORC_PTR_OFFSET(%s, %s_stride * j);\n" ,
342
342
i , varnames [i ], varnames [i ]);
343
343
}
344
344
break ;
345
345
case ORC_VAR_TYPE_DEST :
346
346
if (!(compiler -> target_flags & ORC_TARGET_C_NOEXEC )) {
347
- ORC_ASM_CODE (compiler ," var %d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n" ,
347
+ ORC_ASM_CODE (compiler ," ptr %d = ORC_PTR_OFFSET(ex->arrays[%d], ex->params[%d] * j);\n" ,
348
348
i , i , i );
349
349
} else {
350
- ORC_ASM_CODE (compiler ," var %d = ORC_PTR_OFFSET(%s, %s_stride * j);\n" ,
350
+ ORC_ASM_CODE (compiler ," ptr %d = ORC_PTR_OFFSET(%s, %s_stride * j);\n" ,
351
351
i , varnames [i ], varnames [i ]);
352
352
}
353
353
break ;
@@ -362,16 +362,16 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler)
362
362
switch (var -> vartype ) {
363
363
case ORC_VAR_TYPE_SRC :
364
364
if (!(compiler -> target_flags & ORC_TARGET_C_NOEXEC )) {
365
- ORC_ASM_CODE (compiler ," var %d = ex->arrays[%d];\n" , i , i );
365
+ ORC_ASM_CODE (compiler ," ptr %d = ex->arrays[%d];\n" , i , i );
366
366
} else {
367
- ORC_ASM_CODE (compiler ," var %d = (void *)%s;\n" , i , varnames [i ]);
367
+ ORC_ASM_CODE (compiler ," ptr %d = (void *)%s;\n" , i , varnames [i ]);
368
368
}
369
369
break ;
370
370
case ORC_VAR_TYPE_DEST :
371
371
if (!(compiler -> target_flags & ORC_TARGET_C_NOEXEC )) {
372
- ORC_ASM_CODE (compiler ," var %d = ex->arrays[%d];\n" , i , i );
372
+ ORC_ASM_CODE (compiler ," ptr %d = ex->arrays[%d];\n" , i , i );
373
373
} else {
374
- ORC_ASM_CODE (compiler ," var %d = (void *)%s;\n" , i , varnames [i ]);
374
+ ORC_ASM_CODE (compiler ," ptr %d = (void *)%s;\n" , i , varnames [i ]);
375
375
}
376
376
break ;
377
377
default :
@@ -386,7 +386,7 @@ orc_compiler_c64x_c_assemble (OrcCompiler *compiler)
386
386
}
387
387
}
388
388
if (loop_shift > 0 ) {
389
- ORC_ASM_CODE (compiler ,"%*s n1 = ((4 - (int)var %d)&0x3) >> %d;\n" ,
389
+ ORC_ASM_CODE (compiler ,"%*s n1 = ((4 - (int)ptr %d)&0x3) >> %d;\n" ,
390
390
prefix , "" , align_var , get_shift (compiler -> vars [align_var ].size ));
391
391
ORC_ASM_CODE (compiler ,"%*s n2 = (n - n1) >> %d;\n" ,
392
392
prefix , "" , loop_shift );
@@ -491,7 +491,7 @@ emit_loop (OrcCompiler *compiler, int prefix)
491
491
switch (var -> vartype ) {
492
492
case ORC_VAR_TYPE_SRC :
493
493
case ORC_VAR_TYPE_DEST :
494
- ORC_ASM_CODE (compiler ,"%*s var %d += %d;\n" , prefix , "" ,
494
+ ORC_ASM_CODE (compiler ,"%*s ptr %d += %d;\n" , prefix , "" ,
495
495
i , var -> size << compiler -> loop_shift );
496
496
break ;
497
497
default :
@@ -941,7 +941,22 @@ c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
941
941
dest , dest , src1 , src2 );
942
942
}
943
943
944
- static OrcTarget c_target = {
944
+ static void
945
+ c_rule_loadX (OrcCompiler * p , void * user , OrcInstruction * insn )
946
+ {
947
+ ORC_ASM_CODE (p ," var%d = ptr%d[i];\n" , insn -> dest_args [0 ],
948
+ insn -> src_args [0 ]);
949
+ }
950
+
951
+ static void
952
+ c_rule_storeX (OrcCompiler * p , void * user , OrcInstruction * insn )
953
+ {
954
+ ORC_ASM_CODE (p ," ptr%d[i] = var%d;\n" , insn -> dest_args [0 ],
955
+ insn -> src_args [0 ]);
956
+ }
957
+
958
+
959
+ static OrcTarget c64x_c_target = {
945
960
"c64x-c" ,
946
961
FALSE,
947
962
ORC_GP_REG_BASE ,
@@ -959,12 +974,22 @@ orc_c64x_c_init (void)
959
974
{
960
975
OrcRuleSet * rule_set ;
961
976
962
- orc_target_register (& c_target );
977
+ orc_target_register (& c64x_c_target );
963
978
964
- rule_set = orc_rule_set_new (orc_opcode_set_get ("sys" ), & c_target , 0 );
979
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys" ), & c64x_c_target , 0 );
965
980
966
981
#define REG (a ) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL);
967
982
983
+ orc_rule_register (rule_set , "loadb" , c_rule_loadX , NULL );
984
+ orc_rule_register (rule_set , "loadw" , c_rule_loadX , NULL );
985
+ orc_rule_register (rule_set , "loadl" , c_rule_loadX , NULL );
986
+ orc_rule_register (rule_set , "loadq" , c_rule_loadX , NULL );
987
+
988
+ orc_rule_register (rule_set , "storeb" , c_rule_storeX , NULL );
989
+ orc_rule_register (rule_set , "storew" , c_rule_storeX , NULL );
990
+ orc_rule_register (rule_set , "storel" , c_rule_storeX , NULL );
991
+ orc_rule_register (rule_set , "storeq" , c_rule_storeX , NULL );
992
+
968
993
REG (absb );
969
994
REG (addb );
970
995
REG (addssb );
0 commit comments