AC_DEFINE(ORC_EXPORTS, 1, [Defined for compiling internal code])
-ORC_CFLAGS="$ORC_CFLAGS \$(ERROR_CFLAGS) -I\$(top_srcdir)"
+ORC_CFLAGS="$ORC_CFLAGS \$(ERROR_CFLAGS) -I\$(top_srcdir) -D_GNU_SOURCE"
AC_SUBST(ERROR_CFLAGS)
AC_SUBST(ORC_CFLAGS)
#ifdef HAVE_MMAP
/* This can be used to test non-zero high-32-bits of pointers. */
-//#define USE_MMAP
+/* #define USE_MMAP */
#endif
#define EXTEND_ROWS 16
return ts;
#elif defined(__GNUC__) && defined(HAVE_ARM) && defined(USE_CORTEX_A8_COUNTER)
unsigned int ts;
- //__asm__ __volatile__(" mrc p14, 0, %0, c1, c0, 0 \n" : "=r" (ts));
+ /* __asm__ __volatile__(" mrc p14, 0, %0, c1, c0, 0 \n" : "=r" (ts)); */
__asm__ __volatile__(" mrc p15, 0, %0, c9, c13, 0 \n" : "=r" (ts));
return ts;
#elif defined(_MSC_VER) && defined(HAVE_I386)
return ORC_TEST_FAILED;
}
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf (" no code generated: %s\n", orc_program_get_error (p));
+ /* printf (" no code generated: %s\n", orc_program_get_error (p)); */
return ORC_TEST_INDETERMINATE;
}
result = orc_program_compile_full (p, target, flags);
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf (" no code generated: %s\n", orc_program_get_error (p));
+ /* printf (" no code generated: %s\n", orc_program_get_error (p)); */
return ORC_TEST_INDETERMINATE;
}
result = orc_program_compile_full (p, target, flags);
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf (" no code generated: %s\n", orc_program_get_error (p));
+ /* printf (" no code generated: %s\n", orc_program_get_error (p)); */
return ORC_TEST_INDETERMINATE;
}
ret = system (cmd);
if (ret != 0) {
ORC_ERROR ("compiler failed");
- //printf("%s\n", orc_program_get_asm_code (p));
+ /* printf("%s\n", orc_program_get_asm_code (p)); */
return ORC_TEST_INDETERMINATE;
}
goto out;
}
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf (" no code generated: %s\n", orc_program_get_error (program));
+ /* printf (" no code generated: %s\n", orc_program_get_error (program)); */
ret = ORC_TEST_INDETERMINATE;
goto out;
}
result = orc_program_compile_full (program, target, flags);
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf("compile failed\n");
+ /* printf("compile failed\n"); */
orc_program_reset (program);
return 0;
}
if (program->constant_n > 0) {
n = program->constant_n;
} else {
- //n = 64 + (orc_random(&rand_context)&0xf);
+ /* n = 64 + (orc_random(&rand_context)&0xf); */
n = 1000;
}
result = orc_program_compile_full (p, target, flags);
if (!ORC_COMPILE_RESULT_IS_SUCCESSFUL(result)) {
- //printf (" no code generated: %s\n", orc_program_get_error (p));
+ /* printf (" no code generated: %s\n", orc_program_get_error (p)); */
return ORC_TEST_INDETERMINATE;
}
"r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11",
"ip", "sp", "lr", "pc" };
- //"r12", "r13", "r14", "r15" };
+ /* "r12", "r13", "r14", "r15" }; */
#endif
if (reg < ORC_GP_REG_BASE || reg >= ORC_GP_REG_BASE+16) {
bytecode_append_string (bytecode, p->name);
}
#if 0
- //if (!is_inline) {
+ /* if (!is_inline) { */
if (p->backup_function) {
bytecode_append_code (bytecode, ORC_BC_SET_BACKUP_FUNCTION);
bytecode_pointer (bytecode, p->backup_function);
if (var->size) {
bytecode_append_code (bytecode, ORC_BC_ADD_ACCUMULATOR);
bytecode_append_int (bytecode, var->size);
- //bytecode_append_int (bytecode, var->alignment);
+ /* bytecode_append_int (bytecode, var->alignment); */
}
}
for(i=0;i<8;i++){
{
OrcBytecodeParse _parse;
OrcBytecodeParse *parse = &_parse;
- //int in_function = FALSE;
+ /* int in_function = FALSE; */
int bc;
int size;
int alignment;
/* FIXME this is technically an error */
return 0;
case ORC_BC_BEGIN_FUNCTION:
- //in_function = TRUE;
+ /* in_function = TRUE; */
break;
case ORC_BC_END_FUNCTION:
return 0;
code->code = ORC_PTR_OFFSET(region->write_ptr, chunk->offset);
code->exec = ORC_PTR_OFFSET(region->exec_ptr, chunk->offset);
code->code_size = size;
- //compiler->codeptr = ORC_PTR_OFFSET(region->write_ptr, chunk->offset);
+ /* compiler->codeptr = ORC_PTR_OFFSET(region->write_ptr, chunk->offset); */
}
void
}
if (aux[0] == AT_HWCAP) {
- //if (aux[1] & 64) flags |= ORC_TARGET_NEON_VFP;
- //if (aux[1] & 512) flags |= ORC_TARGET_NEON_IWMMXT;
+ /* if (aux[1] & 64) flags |= ORC_TARGET_NEON_VFP; */
+ /* if (aux[1] & 512) flags |= ORC_TARGET_NEON_IWMMXT; */
if (aux[1] & 4096) flags |= ORC_TARGET_NEON_NEON;
if (aux[1] & 128) flags |= ORC_TARGET_ARM_EDSP;
ORC_INFO("arm hwcap %08x", aux[1]);
orc_check_altivec_fault();
#endif
- //_orc_profile_stamp = orc_profile_stamp_tb;
+ /* _orc_profile_stamp = orc_profile_stamp_tb; */
}
case 28:
orc_x86_microarchitecture = ORC_X86_BONNELL;
break;
- //orc_x86_microarchitecture = ORC_X86_WESTMERE;
- //orc_x86_microarchitecture = ORC_X86_SANDY_BRIDGE;
+ /* orc_x86_microarchitecture = ORC_X86_WESTMERE; */
+ /* orc_x86_microarchitecture = ORC_X86_SANDY_BRIDGE; */
}
} else if (_orc_cpu_family == 15) {
orc_x86_microarchitecture = ORC_X86_NETBURST;
}
if (func) {
func (ex);
- //ORC_ERROR("counters %d %d %d", ex->counter1, ex->counter2, ex->counter3);
+ /* ORC_ERROR("counters %d %d %d", ex->counter1, ex->counter2, ex->counter3); */
} else {
orc_executor_emulate (ex);
}
}
if (func) {
func (ex);
- //ORC_ERROR("counters %d %d %d", ex->counter1, ex->counter2, ex->counter3);
+ /* ORC_ERROR("counters %d %d %d", ex->counter1, ex->counter2, ex->counter3); */
} else {
orc_executor_emulate (ex);
}
p = parser->line;
end = p + strlen (p);
- //printf("%d: %s\n", parser->line_number, parser->line);
+ /* printf("%d: %s\n", parser->line_number, parser->line); */
while (p[0] == ' ' || p[0] == '\t') p++;
}
if (p[0] == '#') {
- //printf("comment: %s\n", p+1);
+ /* printf("comment: %s\n", p+1); */
continue;
}
{
int i;
for(i=0;i<n_tokens;i++){
- //printf("'%s' ", token[i]);
+ /* printf("'%s' ", token[i]); */
}
- //printf("\n");
+ /* printf("\n"); */
}
if (token[0][0] == '.') {
void powerpc_emit_ret (OrcCompiler *compiler)
{
ORC_ASM_CODE(compiler," ret\n");
- //*compiler->codeptr++ = 0xc3;
+ /* *compiler->codeptr++ = 0xc3; */
}
void
for(i=POWERPC_R13;i<=POWERPC_R31;i++){
if (compiler->used_regs[i]) {
- //powerpc_emit_push (compiler, 4, i);
+ /* powerpc_emit_push (compiler, 4, i); */
}
}
}
for(i=POWERPC_R31;i>=POWERPC_R31;i--){
if (compiler->used_regs[i]) {
- //powerpc_emit_pop (compiler, 4, i);
+ /* powerpc_emit_pop (compiler, 4, i); */
}
}
int k;
OrcInstruction *insn;
OrcStaticOpcode *opcode;
- //OrcVariable *args[10];
+ /* OrcVariable *args[10]; */
OrcRule *rule;
int label_outer_loop_start;
int label_loop_start;
(int)ORC_STRUCT_OFFSET(OrcExecutorAlt, m_index));
}
- //powerpc_load_constants (compiler);
+ /* powerpc_load_constants (compiler); */
powerpc_load_inner_constants (compiler);
for(k=0;k<4;k++){
if (compiler->vars[ORC_VAR_A1 + k].name == NULL) continue;
- //powerpc_emit_VX_2(p, "vxor", 0x100004c4, reg, reg, reg);
+ /* powerpc_emit_VX_2(p, "vxor", 0x100004c4, reg, reg, reg); */
powerpc_emit_vxor (compiler, var->alloc, var->alloc, var->alloc);
}
switch (var->vartype) {
case ORC_VAR_TYPE_SRC:
case ORC_VAR_TYPE_DEST:
- //powerpc_emit_load_src (compiler, var);
+ /* powerpc_emit_load_src (compiler, var); */
break;
case ORC_VAR_TYPE_CONST:
break;
switch (var->vartype) {
case ORC_VAR_TYPE_DEST:
- //powerpc_emit_store_dest (compiler, var);
+ /* powerpc_emit_store_dest (compiler, var); */
break;
case ORC_VAR_TYPE_TEMP:
break;
if (regs) orc_arm_emit_pop (compiler, regs);
orc_arm_emit_bx_lr (compiler);
- //orc_arm_dump_insns (compiler);
+ /* orc_arm_dump_insns (compiler); */
}
static OrcTarget orc_arm_target = {
for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+9;i++){
compiler->valid_regs[i] = 1;
}
- //compiler->valid_regs[ORC_ARM_SB] = 0;
+ /* compiler->valid_regs[ORC_ARM_SB] = 0; */
compiler->valid_regs[ORC_ARM_IP] = 0;
compiler->valid_regs[ORC_ARM_SP] = 0;
compiler->valid_regs[ORC_ARM_LR] = 0;
if (compiler->vars[i].name == NULL) continue;
switch (compiler->vars[i].vartype) {
case ORC_VAR_TYPE_CONST:
- //orc_arm_emit_load_imm (compiler, compiler->vars[i].alloc,
- // (int)compiler->vars[i].value);
+ /* orc_arm_emit_load_imm (compiler, compiler->vars[i].alloc, */
+ /* (int)compiler->vars[i].value); */
break;
case ORC_VAR_TYPE_PARAM:
ORC_PROGRAM_ERROR(compiler,"unimplemented");
return;
/* FIXME offset is too large */
- //orc_arm_loadw (compiler, compiler->vars[i].alloc,
- // compiler->exec_reg,
- // (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i]));
+ /* orc_arm_loadw (compiler, compiler->vars[i].alloc, */
+ /* compiler->exec_reg, */
+ /* (int)ORC_STRUCT_OFFSET(OrcExecutor, params[i])); */
break;
case ORC_VAR_TYPE_SRC:
case ORC_VAR_TYPE_DEST:
if (var->ptr_register == 0) {
int i;
i = var - compiler->vars;
- //orc_arm_emit_mov_memoffset_reg (compiler, orc_arm_ptr_size,
- // (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
- // compiler->exec_reg, X86_ECX);
+ /* orc_arm_emit_mov_memoffset_reg (compiler, orc_arm_ptr_size, */
+ /* (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), */
+ /* compiler->exec_reg, X86_ECX); */
ptr_reg = ORC_ARM_PC;
} else {
ptr_reg = var->ptr_register;
switch (var->size << compiler->loop_shift) {
case 1:
orc_arm_loadb (compiler, var->alloc, ptr_reg, 0);
- //orc_arm_emit_mov_memoffset_reg (compiler, 1, 0, ptr_reg, X86_ECX);
- //orc_arm_emit_mov_reg_arm (compiler, X86_ECX, var->alloc);
+ /* orc_arm_emit_mov_memoffset_reg (compiler, 1, 0, ptr_reg, X86_ECX); */
+ /* orc_arm_emit_mov_reg_arm (compiler, X86_ECX, var->alloc); */
break;
case 2:
orc_arm_loadw (compiler, var->alloc, ptr_reg, 0);
- //orc_arm_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX);
- //orc_arm_emit_mov_reg_arm (compiler, X86_ECX, var->alloc);
+ /* orc_arm_emit_mov_memoffset_reg (compiler, 2, 0, ptr_reg, X86_ECX); */
+ /* orc_arm_emit_mov_reg_arm (compiler, X86_ECX, var->alloc); */
break;
case 4:
orc_arm_loadl (compiler, var->alloc, ptr_reg, 0);
- //orc_arm_emit_mov_memoffset_arm (compiler, 4, 0, ptr_reg, var->alloc);
+ /* orc_arm_emit_mov_memoffset_arm (compiler, 4, 0, ptr_reg, var->alloc); */
break;
- //case 8:
- //orc_arm_emit_mov_memoffset_arm (compiler, 8, 0, ptr_reg, var->alloc);
+ /* case 8: */
+ /* orc_arm_emit_mov_memoffset_arm (compiler, 8, 0, ptr_reg, var->alloc); */
break;
- //case 16:
- //orc_arm_emit_mov_memoffset_arm (compiler, 16, 0, ptr_reg, var->alloc);
+ /* case 16: */
+ /* orc_arm_emit_mov_memoffset_arm (compiler, 16, 0, ptr_reg, var->alloc); */
break;
default:
ORC_COMPILER_ERROR(compiler, "bad size %d", var->size << compiler->loop_shift);
{
int ptr_reg;
if (var->ptr_register == 0) {
- //orc_arm_emit_mov_memoffset_reg (compiler, orc_arm_ptr_size,
- // var->ptr_offset, compiler->exec_reg, X86_ECX);
+ /* orc_arm_emit_mov_memoffset_reg (compiler, orc_arm_ptr_size, */
+ /* var->ptr_offset, compiler->exec_reg, X86_ECX); */
ptr_reg = ORC_ARM_PC;
} else {
ptr_reg = var->ptr_register;
switch (var->size << compiler->loop_shift) {
case 1:
orc_arm_storeb (compiler, ptr_reg, 0, var->alloc);
- //orc_arm_emit_mov_orc_arm_reg (compiler, var->alloc, X86_ECX);
- //orc_arm_emit_mov_reg_memoffset (compiler, 1, X86_ECX, 0, ptr_reg);
+ /* orc_arm_emit_mov_orc_arm_reg (compiler, var->alloc, X86_ECX); */
+ /* orc_arm_emit_mov_reg_memoffset (compiler, 1, X86_ECX, 0, ptr_reg); */
break;
case 2:
orc_arm_storew (compiler, ptr_reg, 0, var->alloc);
- //orc_arm_emit_mov_orc_arm_reg (compiler, var->alloc, X86_ECX);
- //orc_arm_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg);
+ /* orc_arm_emit_mov_orc_arm_reg (compiler, var->alloc, X86_ECX); */
+ /* orc_arm_emit_mov_reg_memoffset (compiler, 2, X86_ECX, 0, ptr_reg); */
break;
case 4:
orc_arm_storel (compiler, ptr_reg, 0, var->alloc);
- //orc_arm_emit_mov_orc_arm_memoffset (compiler, 4, var->alloc, 0, ptr_reg,
- // var->is_aligned, var->is_uncached);
+ /* orc_arm_emit_mov_orc_arm_memoffset (compiler, 4, var->alloc, 0, ptr_reg, */
+ /* var->is_aligned, var->is_uncached); */
break;
case 8:
- //orc_arm_emit_mov_orc_arm_memoffset (compiler, 8, var->alloc, 0, ptr_reg,
- // var->is_aligned, var->is_uncached);
+ /* orc_arm_emit_mov_orc_arm_memoffset (compiler, 8, var->alloc, 0, ptr_reg, */
+ /* var->is_aligned, var->is_uncached); */
break;
case 16:
- //orc_arm_emit_mov_orc_arm_memoffset (compiler, 16, var->alloc, 0, ptr_reg,
- // var->is_aligned, var->is_uncached);
+ /* orc_arm_emit_mov_orc_arm_memoffset (compiler, 16, var->alloc, 0, ptr_reg, */
+ /* var->is_aligned, var->is_uncached); */
break;
default:
ORC_COMPILER_ERROR(compiler, "bad size %d", var->size << compiler->loop_shift);
switch (compiler->vars[insn->src_args[k]].vartype) {
case ORC_VAR_TYPE_SRC:
case ORC_VAR_TYPE_DEST:
- //orc_arm_emit_load_src (compiler, &compiler->vars[insn->src_args[k]]);
+ /* orc_arm_emit_load_src (compiler, &compiler->vars[insn->src_args[k]]); */
break;
case ORC_VAR_TYPE_CONST:
break;
switch (compiler->vars[insn->dest_args[k]].vartype) {
case ORC_VAR_TYPE_DEST:
- //orc_arm_emit_store_dest (compiler, &compiler->vars[insn->dest_args[k]]);
+ /* orc_arm_emit_store_dest (compiler, &compiler->vars[insn->dest_args[k]]); */
break;
case ORC_VAR_TYPE_TEMP:
break;
compiler->vars[k].ptr_register,
compiler->vars[k].size << compiler->loop_shift);
} else {
- //orc_arm_emit_add_imm_memoffset (compiler, orc_arm_ptr_size,
- // compiler->vars[k].size << compiler->loop_shift,
- // (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]),
- // compiler->exec_reg);
+ /* orc_arm_emit_add_imm_memoffset (compiler, orc_arm_ptr_size, */
+ /* compiler->vars[k].size << compiler->loop_shift, */
+ /* (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]), */
+ /* compiler->exec_reg); */
}
}
}
#include <orc/orcprogram.h>
#include <orc/orcdebug.h>
-//static const char *c_get_type_name (int size);
+/* static const char *c_get_type_name (int size); */
void orc_c_init (void);
" int counter3;\n"
" void *arrays[ORC_N_VARIABLES];\n"
" int params[ORC_N_VARIABLES];\n"
- " //OrcVariable vars[ORC_N_VARIABLES];\n"
- " //OrcVariable *args[ORC_OPCODE_N_ARGS];\n"
+ " /* OrcVariable vars[ORC_N_VARIABLES]; */\n"
+ " /* OrcVariable *args[ORC_OPCODE_N_ARGS]; */\n"
"};\n"
"#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n"
"#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n"
if (regs) orc_arm_emit_pop (compiler, regs);
orc_arm_emit_bx_lr (compiler);
- //arm_dump_insns (compiler);
+ /* arm_dump_insns (compiler); */
}
static OrcTarget neon_target = {
for(i=ORC_VEC_REG_BASE+0;i<ORC_VEC_REG_BASE+32;i+=2){
compiler->valid_regs[i] = 1;
}
- //compiler->valid_regs[ORC_ARM_SB] = 0;
+ /* compiler->valid_regs[ORC_ARM_SB] = 0; */
compiler->valid_regs[ORC_ARM_IP] = 0;
compiler->valid_regs[ORC_ARM_SP] = 0;
compiler->valid_regs[ORC_ARM_LR] = 0;
if (var->ptr_register == 0) {
int i;
i = var - compiler->vars;
- //arm_emit_mov_memoffset_reg (compiler, arm_ptr_size,
- // (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]),
- // p->exec_reg, X86_ECX);
+ /* arm_emit_mov_memoffset_reg (compiler, arm_ptr_size, */
+ /* (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[i]), */
+ /* p->exec_reg, X86_ECX); */
ptr_reg = ORC_ARM_PC;
} else {
ptr_reg = var->ptr_register;
{
int ptr_reg;
if (var->ptr_register == 0) {
- //arm_emit_mov_memoffset_reg (compiler, arm_ptr_size,
- // var->ptr_offset, p->exec_reg, X86_ECX);
+ /* arm_emit_mov_memoffset_reg (compiler, arm_ptr_size, */
+ /* var->ptr_offset, p->exec_reg, X86_ECX); */
ptr_reg = ORC_ARM_PC;
} else {
ptr_reg = var->ptr_register;
switch (compiler->vars[insn->src_args[k]].vartype) {
case ORC_VAR_TYPE_SRC:
case ORC_VAR_TYPE_DEST:
- //orc_neon_emit_load_src (compiler, &compiler->vars[insn->src_args[k]], unroll_index);
+ /* orc_neon_emit_load_src (compiler, &compiler->vars[insn->src_args[k]], unroll_index); */
break;
case ORC_VAR_TYPE_CONST:
break;
switch (compiler->vars[insn->dest_args[k]].vartype) {
case ORC_VAR_TYPE_DEST:
- //orc_neon_emit_store_dest (compiler, &compiler->vars[insn->dest_args[k]]);
+ /* orc_neon_emit_store_dest (compiler, &compiler->vars[insn->dest_args[k]]); */
break;
case ORC_VAR_TYPE_TEMP:
break;
compiler->vars[k].ptr_register,
compiler->vars[k].size << compiler->loop_shift);
} else {
- //arm_emit_add_imm_memoffset (compiler, arm_ptr_size,
- // compiler->vars[k].size << compiler->loop_shift,
- // (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]),
- // p->exec_reg);
+ /* arm_emit_add_imm_memoffset (compiler, arm_ptr_size, */
+ /* compiler->vars[k].size << compiler->loop_shift, */
+ /* (int)ORC_STRUCT_OFFSET(OrcExecutor, arrays[k]), */
+ /* p->exec_reg); */
}
}
}
RULE(addssb, "vaddsbs", 0x10000300)
RULE(addusb, "vaddubs", 0x10000200)
RULE(andb, "vand", 0x10000404)
-//RULE(andnb, "vandc", 0x10000444)
+/* RULE(andnb, "vandc", 0x10000444) */
RULE(avgsb, "vavgsb", 0x10000502)
RULE(avgub, "vavgub", 0x10000402)
RULE(cmpeqb, "vcmpequb", 0x10000006)
RULE(addssw, "vaddshs", 0x10000340)
RULE(addusw, "vadduhs", 0x10000240)
RULE(andw, "vand", 0x10000404)
-//RULE(andnw, "vandc", 0x10000444)
+/* RULE(andnw, "vandc", 0x10000444) */
RULE(avgsw, "vavgsh", 0x10000542)
RULE(avguw, "vavguh", 0x10000442)
RULE(cmpeqw, "vcmpequh", 0x10000046)
RULE(addssl, "vaddsws", 0x10000380)
RULE(addusl, "vadduws", 0x10000280)
RULE(andl, "vand", 0x10000404)
-//RULE(andnl, "vandc", 0x10000444)
+/* RULE(andnl, "vandc", 0x10000444) */
RULE(avgsl, "vavgsw", 0x10000582)
RULE(avgul, "vavguw", 0x10000482)
RULE(cmpeql, "vcmpequw", 0x10000086)
orc_x86_emit_mov_memindex_mmx (compiler, 4, 0,
src->ptr_register, compiler->gp_tmpreg, 2, tmp, FALSE);
#ifdef MMX
- //orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc);
+ /* orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc); */
orc_mmx_emit_psllq_imm (compiler, 8*4*i, tmp);
orc_mmx_emit_por (compiler, tmp, dest->alloc);
#else
BINARY(maxub,pmaxub,0xde)
BINARY(minsb,pminsb,0x3838)
BINARY(minub,pminub,0xda)
-//BINARY(mullb,pmullb,0xd5)
-//BINARY(mulhsb,pmulhb,0xe5)
-//BINARY(mulhub,pmulhub,0xe4)
+/* BINARY(mullb,pmullb,0xd5) */
+/* BINARY(mulhsb,pmulhb,0xe5) */
+/* BINARY(mulhub,pmulhub,0xe4) */
BINARY(orb,por,0xeb)
-//UNARY(signb,psignb,0x3808)
+/* UNARY(signb,psignb,0x3808) */
BINARY(subb,psubb,0xf8)
BINARY(subssb,psubsb,0xe8)
BINARY(subusb,psubusb,0xd8)
BINARY(mulhsw,pmulhw,0xe5)
BINARY(mulhuw,pmulhuw,0xe4)
BINARY(orw,por,0xeb)
-//UNARY(signw,psignw,0x3809)
+/* UNARY(signw,psignw,0x3809) */
BINARY(subw,psubw,0xf9)
BINARY(subssw,psubsw,0xe9)
BINARY(subusw,psubusw,0xd9)
UNARY(absl,pabsd,0x381e)
BINARY(addl,paddd,0xfe)
-//BINARY(addssl,paddsd,0xed)
-//BINARY(addusl,paddusd,0xdd)
+/* BINARY(addssl,paddsd,0xed) */
+/* BINARY(addusl,paddusd,0xdd) */
BINARY(andl,pand,0xdb)
BINARY(andnl,pandn,0xdf)
-//BINARY(avgul,pavgd,0xe3)
+/* BINARY(avgul,pavgd,0xe3) */
BINARY(cmpeql,pcmpeqd,0x76)
BINARY(cmpgtsl,pcmpgtd,0x66)
BINARY(maxsl,pmaxsd,0x383d)
BINARY(minsl,pminsd,0x3839)
BINARY(minul,pminud,0x383b)
BINARY(mulll,pmulld,0x3840)
-//BINARY(mulhsl,pmulhd,0xe5)
-//BINARY(mulhul,pmulhud,0xe4)
+/* BINARY(mulhsl,pmulhd,0xe5) */
+/* BINARY(mulhul,pmulhud,0xe4) */
BINARY(orl,por,0xeb)
-//UNARY(signl,psignd,0x380a)
+/* UNARY(signl,psignd,0x380a) */
BINARY(subl,psubd,0xfa)
-//BINARY(subssl,psubsd,0xe9)
-//BINARY(subusl,psubusd,0xd9)
+/* BINARY(subssl,psubsd,0xe9) */
+/* BINARY(subusl,psubusd,0xd9) */
BINARY(xorl,pxor,0xef)
BINARY(andq,pand,0xdb)
mmx_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int type = ORC_PTR_TO_INT(user);
- //int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 };
- //int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 };
- //int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 };
- //const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" };
+ /* int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 }; */
+ /* int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 }; */
+ /* int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 }; */
+ /* const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" }; */
const int opcodes[] = { ORC_X86_psllw, ORC_X86_psrlw, ORC_X86_psraw,
ORC_X86_pslld, ORC_X86_psrld, ORC_X86_psrad, ORC_X86_psllq,
ORC_X86_psrlq };
static void
mmx_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
mmx_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
mmx_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
mmx_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
orc_mmx_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_mmx_emit_pxor (p, tmp, tmp2); /* clamped value */
orc_mmx_emit_pand (p, tmp3, tmp2);
orc_mmx_emit_paddd (p, src, dest);
- orc_mmx_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping
+ orc_mmx_emit_pandn (p, dest, tmp3); /* tmp is mask: ~0 is for clamping */
orc_mmx_emit_movq (p, tmp3, dest);
orc_mmx_emit_por (p, tmp2, dest);
orc_mmx_emit_pslld_imm (p, 1, tmp2);
orc_mmx_emit_movq (p, tmp, tmp3);
orc_mmx_emit_pxor (p, tmp2, tmp3);
- orc_mmx_emit_psrad_imm (p, 31, tmp3); // tmp3 is mask: ~0 is for clamping
+ orc_mmx_emit_psrad_imm (p, 31, tmp3); /* tmp3 is mask: ~0 is for clamping */
orc_mmx_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_mmx_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_mmx_emit_pxor (p, tmp, tmp2); /* clamped value */
orc_mmx_emit_pand (p, tmp3, tmp2);
orc_mmx_emit_psubd (p, src, dest);
orc_rule_register (rule_set, "convql", mmx_rule_convql, NULL);
orc_rule_register (rule_set, "convslq", mmx_rule_convslq, NULL);
orc_rule_register (rule_set, "convulq", mmx_rule_convulq, NULL);
- //orc_rule_register (rule_set, "convsssql", mmx_rule_convsssql, NULL);
+ /* orc_rule_register (rule_set, "convsssql", mmx_rule_convsssql, NULL); */
orc_rule_register (rule_set, "mulsbw", mmx_rule_mulsbw, NULL);
orc_rule_register (rule_set, "mulubw", mmx_rule_mulubw, NULL);
code = NEON_BINARY(0xf3b00900, var->alloc, var->aligned_data,
var->mask_alloc);
orc_arm_emit (compiler, code);
-//orc_neon_emit_mov (compiler, var->alloc, var->mask_alloc);
+/* orc_neon_emit_mov (compiler, var->alloc, var->mask_alloc); */
orc_neon_emit_mov (compiler, var->aligned_data, var->aligned_data + 1);
#endif
code |= (var->ptr_register&0xf) << 16;
code |= ((var->alloc)&0xf) << 12;
code |= (((var->alloc)>>4)&0x1) << 22;
- //code |= (!update) << 1;
+ /* code |= (!update) << 1; */
code |= (1) << 1;
orc_arm_emit (compiler, code);
orc_neon_load_vec_unaligned (compiler, var, update);
} else {
if (compiler->insn_shift > 0) {
- //ORC_ERROR("slow load");
+ /* ORC_ERROR("slow load"); */
}
for(i=0;i<(1<<compiler->insn_shift);i++){
ORC_ASM_CODE(compiler," vld1.32 %s[%d], [%s]%s\n",
void
orc_neon_emit_loadiq (OrcCompiler *compiler, int reg, int value)
{
- //orc_uint32 code;
- //int shift;
- //int neg = FALSE;
+ /* orc_uint32 code; */
+ /* int shift; */
+ /* int neg = FALSE; */
if (value == 0) {
orc_neon_emit_binary_quad (compiler, "veor", 0xf3000110, reg, reg, reg);
}
if (value < 0) {
- //neg = TRUE;
+ /* neg = TRUE; */
value = ~value;
}
#if 0
BINARY(addssb,"vqadd.s8",0xf2000010, 3)
BINARY(addusb,"vqadd.u8",0xf3000010, 3)
BINARY(andb,"vand",0xf2000110, 3)
-//BINARY(andnb,"vbic",0xf2100110, 3)
+/* BINARY(andnb,"vbic",0xf2100110, 3) */
BINARY(avgsb,"vrhadd.s8",0xf2000100, 3)
BINARY(avgub,"vrhadd.u8",0xf3000100, 3)
BINARY(cmpeqb,"vceq.i8",0xf3000810, 3)
BINARY(minub,"vmin.u8",0xf3000610, 3)
BINARY(mullb,"vmul.i8",0xf2000910, 3)
BINARY(orb,"vorr",0xf2200110, 3)
-//LSHIFT(shlb,"vshl.i8",0xf2880510, 3)
-//RSHIFT(shrsb,"vshr.s8",0xf2880010,8, 3)
-//RSHIFT(shrub,"vshr.u8",0xf3880010,8, 3)
+/* LSHIFT(shlb,"vshl.i8",0xf2880510, 3) */
+/* RSHIFT(shrsb,"vshr.s8",0xf2880010,8, 3) */
+/* RSHIFT(shrub,"vshr.u8",0xf3880010,8, 3) */
BINARY(subb,"vsub.i8",0xf3000800, 3)
BINARY(subssb,"vqsub.s8",0xf2000210, 3)
BINARY(subusb,"vqsub.u8",0xf3000210, 3)
BINARY(addssw,"vqadd.s16",0xf2100010, 2)
BINARY(addusw,"vqadd.u16",0xf3100010, 2)
BINARY(andw,"vand",0xf2000110, 2)
-//BINARY(andnw,"vbic",0xf2100110, 2)
+/* BINARY(andnw,"vbic",0xf2100110, 2) */
BINARY(avgsw,"vrhadd.s16",0xf2100100, 2)
BINARY(avguw,"vrhadd.u16",0xf3100100, 2)
BINARY(cmpeqw,"vceq.i16",0xf3100810, 2)
BINARY(minuw,"vmin.u16",0xf3100610, 2)
BINARY(mullw,"vmul.i16",0xf2100910, 2)
BINARY(orw,"vorr",0xf2200110, 2)
-//LSHIFT(shlw,"vshl.i16",0xf2900510, 2)
-//RSHIFT(shrsw,"vshr.s16",0xf2900010,16, 2)
-//RSHIFT(shruw,"vshr.u16",0xf3900010,16, 2)
+/* LSHIFT(shlw,"vshl.i16",0xf2900510, 2) */
+/* RSHIFT(shrsw,"vshr.s16",0xf2900010,16, 2) */
+/* RSHIFT(shruw,"vshr.u16",0xf3900010,16, 2) */
BINARY(subw,"vsub.i16",0xf3100800, 2)
BINARY(subssw,"vqsub.s16",0xf2100210, 2)
BINARY(subusw,"vqsub.u16",0xf3100210, 2)
BINARY(addssl,"vqadd.s32",0xf2200010, 1)
BINARY(addusl,"vqadd.u32",0xf3200010, 1)
BINARY(andl,"vand",0xf2000110, 1)
-//BINARY(andnl,"vbic",0xf2100110, 1)
+/* BINARY(andnl,"vbic",0xf2100110, 1) */
BINARY(avgsl,"vrhadd.s32",0xf2200100, 1)
BINARY(avgul,"vrhadd.u32",0xf3200100, 1)
BINARY(cmpeql,"vceq.i32",0xf3200810, 1)
BINARY(minul,"vmin.u32",0xf3200610, 1)
BINARY(mulll,"vmul.i32",0xf2200910, 1)
BINARY(orl,"vorr",0xf2200110, 1)
-//LSHIFT(shll,"vshl.i32",0xf2a00510, 1)
-//RSHIFT(shrsl,"vshr.s32",0xf2a00010,32, 1)
-//RSHIFT(shrul,"vshr.u32",0xf3a00010,32, 1)
+/* LSHIFT(shll,"vshl.i32",0xf2a00510, 1) */
+/* RSHIFT(shrsl,"vshr.s32",0xf2a00010,32, 1) */
+/* RSHIFT(shrul,"vshr.u32",0xf3a00010,32, 1) */
BINARY(subl,"vsub.i32",0xf3200800, 1)
BINARY(subssl,"vqsub.s32",0xf2200210, 1)
BINARY(subusl,"vqsub.u32",0xf3200210, 1)
BINARY(xorl,"veor",0xf3000110, 1)
-//UNARY(absq,"vabs.s64",0xf3b10300, 0)
+/* UNARY(absq,"vabs.s64",0xf3b10300, 0) */
BINARY(addq,"vadd.i64",0xf2300800, 0)
-//BINARY(addssq,"vqadd.s64",0xf2000010, 0)
-//BINARY(addusq,"vqadd.u64",0xf3000010, 0)
+/* BINARY(addssq,"vqadd.s64",0xf2000010, 0) */
+/* BINARY(addusq,"vqadd.u64",0xf3000010, 0) */
BINARY(andq,"vand",0xf2000110, 0)
-//BINARY(avgsq,"vrhadd.s64",0xf2000100, 0)
-//BINARY(avguq,"vrhadd.u64",0xf3000100, 0)
-//BINARY(cmpeqq,"vceq.i64",0xf3000810, 0)
-//BINARY(cmpgtsq,"vcgt.s64",0xf2000300, 0)
+/* BINARY(avgsq,"vrhadd.s64",0xf2000100, 0) */
+/* BINARY(avguq,"vrhadd.u64",0xf3000100, 0) */
+/* BINARY(cmpeqq,"vceq.i64",0xf3000810, 0) */
+/* BINARY(cmpgtsq,"vcgt.s64",0xf2000300, 0) */
MOVE(copyq,"vmov",0xf2200110, 0)
-//BINARY(maxsq,"vmax.s64",0xf2000600, 0)
-//BINARY(maxuq,"vmax.u64",0xf3000600, 0)
-//BINARY(minsq,"vmin.s64",0xf2000610, 0)
-//BINARY(minuq,"vmin.u64",0xf3000610, 0)
-//BINARY(mullq,"vmul.i64",0xf2000910, 0)
+/* BINARY(maxsq,"vmax.s64",0xf2000600, 0) */
+/* BINARY(maxuq,"vmax.u64",0xf3000600, 0) */
+/* BINARY(minsq,"vmin.s64",0xf2000610, 0) */
+/* BINARY(minuq,"vmin.u64",0xf3000610, 0) */
+/* BINARY(mullq,"vmul.i64",0xf2000910, 0) */
BINARY(orq,"vorr",0xf2200110, 0)
BINARY(subq,"vsub.i64",0xf3300800, 0)
-//BINARY(subssq,"vqsub.s64",0xf2000210, 0)
-//BINARY(subusq,"vqsub.u64",0xf3000210, 0)
+/* BINARY(subssq,"vqsub.s64",0xf2000210, 0) */
+/* BINARY(subusq,"vqsub.u64",0xf3000210, 0) */
BINARY(xorq,"veor",0xf3000110, 0)
UNARY_LONG(convsbw,"vmovl.s8",0xf2880a10, 3)
BINARY(maxf,"vmax.f32",0xf2000f00, 1)
BINARY(minf,"vmin.f32",0xf2200f00, 1)
BINARY(cmpeqf,"vceq.f32",0xf2000e00, 1)
-//BINARY_R(cmpltf,"vclt.f32",0xf3200e00, 1)
-//BINARY_R(cmplef,"vcle.f32",0xf3000e00, 1)
+/* BINARY_R(cmpltf,"vclt.f32",0xf3200e00, 1) */
+/* BINARY_R(cmplef,"vcle.f32",0xf3000e00, 1) */
UNARY(convfl,"vcvt.s32.f32",0xf3bb0700, 1)
UNARY(convlf,"vcvt.f32.s32",0xf3bb0600, 1)
BINARY_VFP(muld,"vmul.f64",0xee200b00, 0)
BINARY_VFP(divd,"vdiv.f64",0xee800b00, 0)
UNARY_VFP(sqrtd,"vsqrt.f64",0xeeb10b00, 0)
-//BINARY_VFP(cmpeqd,"vcmpe.f64",0xee000000, 0)
+/* BINARY_VFP(cmpeqd,"vcmpe.f64",0xee000000, 0) */
UNARY_VFP(convdf,"vcvt.f64.f32",0xee200b00, 0)
UNARY_VFP(convfd,"vcvt.f32.f64",0xee200b00, 0)
p->vars[insn->src_args[1]].alloc);
for(i = 0; i < NUM_ITERS_DIVF; i++) {
orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10,
- p->tmpreg2, //correction factor
- p->tmpreg, //the last estimate
- p->vars[insn->src_args[1]].alloc); //the original number
+ p->tmpreg2, /* correction factor */
+ p->tmpreg, /* the last estimate */
+ p->vars[insn->src_args[1]].alloc); /* the original number */
orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10,
- p->tmpreg, //revised estimate
- p->tmpreg, //last estimate
- p->tmpreg2); //correction factor
+ p->tmpreg, /* revised estimate */
+ p->tmpreg, /* last estimate */
+ p->tmpreg2); /* correction factor */
}
orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10,
p->vars[insn->src_args[1]].alloc);
for(i = 0; i < NUM_ITERS_DIVF; i++) {
orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10,
- p->tmpreg2, //correction factor
- p->tmpreg, //the last estimate
- p->vars[insn->src_args[1]].alloc); //the original number
+ p->tmpreg2, /* correction factor */
+ p->tmpreg, /* the last estimate */
+ p->vars[insn->src_args[1]].alloc); /* the original number */
orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10,
- p->tmpreg, //revised estimate
- p->tmpreg, //last estimate
- p->tmpreg2); //correction factor
+ p->tmpreg, /* revised estimate */
+ p->tmpreg, /* last estimate */
+ p->tmpreg2); /* correction factor */
}
orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10,
for(i=0; i < NUM_ITERS_DIVF; i++) {
orc_neon_emit_binary (p, "vrecps.f32", 0xf2000f10,
- p->tmpreg2, //correction factor
- p->vars[insn->dest_args[0]].alloc, //the last estimate
- p->tmpreg); //the original number
+ p->tmpreg2, /* correction factor */
+ p->vars[insn->dest_args[0]].alloc, /* the last estimate */
+ p->tmpreg); /* the original number */
orc_neon_emit_binary (p, "vmul.f32", 0xf3000d10,
- p->vars[insn->dest_args[0]].alloc, //revised estimate
- p->vars[insn->dest_args[0]].alloc, //last estimate
- p->tmpreg2); //correction factor
+ p->vars[insn->dest_args[0]].alloc, /* revised estimate */
+ p->vars[insn->dest_args[0]].alloc, /* last estimate */
+ p->tmpreg2); /* correction factor */
}
} else if (p->insn_shift == vec_shift + 1) {
for(i=0; i < NUM_ITERS_DIVF; i++) {
orc_neon_emit_binary_quad (p, "vrecps.f32", 0xf2000f10,
- p->tmpreg2, //correction factor
- p->vars[insn->dest_args[0]].alloc, //the last estimate
- p->tmpreg); //the original number
+ p->tmpreg2, /* correction factor */
+ p->vars[insn->dest_args[0]].alloc, /* the last estimate */
+ p->tmpreg); /* the original number */
orc_neon_emit_binary_quad (p, "vmul.f32", 0xf3000d10,
- p->vars[insn->dest_args[0]].alloc, //revised estimate
- p->vars[insn->dest_args[0]].alloc, //last estimate
- p->tmpreg2); //correction factor
+ p->vars[insn->dest_args[0]].alloc, /* revised estimate */
+ p->vars[insn->dest_args[0]].alloc, /* last estimate */
+ p->tmpreg2); /* correction factor */
}
} else {
REG(addssb);
REG(addusb);
REG(andb);
- //REG(andnb);
+ /* REG(andnb); */
REG(avgsb);
REG(avgub);
REG(cmpeqb);
REG(mulhsb);
REG(mulhub);
REG(orb);
- //REG(shlb);
- //REG(shrsb);
- //REG(shrub);
+ /* REG(shlb); */
+ /* REG(shrsb); */
+ /* REG(shrub); */
REG(signb);
REG(subb);
REG(subssb);
REG(addssw);
REG(addusw);
REG(andw);
- //REG(andnw);
+ /* REG(andnw); */
REG(avgsw);
REG(avguw);
REG(cmpeqw);
REG(mulhsw);
REG(mulhuw);
REG(orw);
- //REG(shlw);
- //REG(shrsw);
- //REG(shruw);
+ /* REG(shlw); */
+ /* REG(shrsw); */
+ /* REG(shruw); */
REG(signw);
REG(subw);
REG(subssw);
REG(addssl);
REG(addusl);
REG(andl);
- //REG(andnl);
+ /* REG(andnl); */
REG(avgsl);
REG(avgul);
REG(cmpeql);
REG(mulhsl);
REG(mulhul);
REG(orl);
- //REG(shll);
- //REG(shrsl);
- //REG(shrul);
+ /* REG(shll); */
+ /* REG(shrsl); */
+ /* REG(shrul); */
REG(signl);
REG(subl);
REG(subssl);
REG(maxf);
REG(minf);
REG(cmpeqf);
- //REG(cmpltf);
- //REG(cmplef);
+ /* REG(cmpltf); */
+ /* REG(cmplef); */
REG(convfl);
REG(convlf);
REG(muld);
REG(divd);
REG(sqrtd);
- //REG(cmpeqd);
+ /* REG(cmpeqd); */
REG(convdf);
REG(convfd);
orc_x86_emit_mov_memindex_sse (compiler, 4, 0,
src->ptr_register, compiler->gp_tmpreg, 2, tmp, FALSE);
#ifdef MMX
- //orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc);
+ /* orc_mmx_emit_punpckldq (compiler, tmp, dest->alloc); */
orc_sse_emit_psllq_imm (compiler, 8*4*i, tmp);
orc_sse_emit_por (compiler, tmp, dest->alloc);
#else
BINARY(maxub,pmaxub,0xde)
BINARY(minsb,pminsb,0x3838)
BINARY(minub,pminub,0xda)
-//BINARY(mullb,pmullb,0xd5)
-//BINARY(mulhsb,pmulhb,0xe5)
-//BINARY(mulhub,pmulhub,0xe4)
+/* BINARY(mullb,pmullb,0xd5) */
+/* BINARY(mulhsb,pmulhb,0xe5) */
+/* BINARY(mulhub,pmulhub,0xe4) */
BINARY(orb,por,0xeb)
-//UNARY(signb,psignb,0x3808)
+/* UNARY(signb,psignb,0x3808) */
BINARY(subb,psubb,0xf8)
BINARY(subssb,psubsb,0xe8)
BINARY(subusb,psubusb,0xd8)
BINARY(mulhsw,pmulhw,0xe5)
BINARY(mulhuw,pmulhuw,0xe4)
BINARY(orw,por,0xeb)
-//UNARY(signw,psignw,0x3809)
+/* UNARY(signw,psignw,0x3809) */
BINARY(subw,psubw,0xf9)
BINARY(subssw,psubsw,0xe9)
BINARY(subusw,psubusw,0xd9)
UNARY(absl,pabsd,0x381e)
BINARY(addl,paddd,0xfe)
-//BINARY(addssl,paddsd,0xed)
-//BINARY(addusl,paddusd,0xdd)
+/* BINARY(addssl,paddsd,0xed) */
+/* BINARY(addusl,paddusd,0xdd) */
BINARY(andl,pand,0xdb)
BINARY(andnl,pandn,0xdf)
-//BINARY(avgul,pavgd,0xe3)
+/* BINARY(avgul,pavgd,0xe3) */
BINARY(cmpeql,pcmpeqd,0x76)
BINARY(cmpgtsl,pcmpgtd,0x66)
BINARY(maxsl,pmaxsd,0x383d)
BINARY(minsl,pminsd,0x3839)
BINARY(minul,pminud,0x383b)
BINARY(mulll,pmulld,0x3840)
-//BINARY(mulhsl,pmulhd,0xe5)
-//BINARY(mulhul,pmulhud,0xe4)
+/* BINARY(mulhsl,pmulhd,0xe5) */
+/* BINARY(mulhul,pmulhud,0xe4) */
BINARY(orl,por,0xeb)
-//UNARY(signl,psignd,0x380a)
+/* UNARY(signl,psignd,0x380a) */
BINARY(subl,psubd,0xfa)
-//BINARY(subssl,psubsd,0xe9)
-//BINARY(subusl,psubusd,0xd9)
+/* BINARY(subssl,psubsd,0xe9) */
+/* BINARY(subusl,psubusd,0xd9) */
BINARY(xorl,pxor,0xef)
BINARY(andq,pand,0xdb)
sse_rule_shift (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int type = ORC_PTR_TO_INT(user);
- //int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 };
- //int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 };
- //int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 };
- //const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" };
+ /* int imm_code1[] = { 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x73, 0x73 }; */
+ /* int imm_code2[] = { 6, 2, 4, 6, 2, 4, 6, 2 }; */
+ /* int reg_code[] = { 0xf1, 0xd1, 0xe1, 0xf2, 0xd2, 0xe2, 0xf3, 0xd3 }; */
+ /* const char *code[] = { "psllw", "psrlw", "psraw", "pslld", "psrld", "psrad", "psllq", "psrlq" }; */
const int opcodes[] = { ORC_X86_psllw, ORC_X86_psrlw, ORC_X86_psraw,
ORC_X86_pslld, ORC_X86_psrld, ORC_X86_psrad, ORC_X86_psllq,
ORC_X86_psrlq };
static void
sse_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
sse_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
sse_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
static void
sse_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
- //int src = p->vars[insn->src_args[0]].alloc;
+ /* int src = p->vars[insn->src_args[0]].alloc; */
int dest = p->vars[insn->dest_args[0]].alloc;
/* FIXME slow */
orc_sse_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_sse_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_sse_emit_pxor (p, tmp, tmp2); /* clamped value */
orc_sse_emit_pand (p, tmp3, tmp2);
orc_sse_emit_paddd (p, src, dest);
- orc_sse_emit_pandn (p, dest, tmp3); // tmp is mask: ~0 is for clamping
+ orc_sse_emit_pandn (p, dest, tmp3); /* tmp is mask: ~0 is for clamping */
orc_sse_emit_movdqa (p, tmp3, dest);
orc_sse_emit_por (p, tmp2, dest);
orc_sse_emit_pslld_imm (p, 1, tmp2);
orc_sse_emit_movdqa (p, tmp, tmp3);
orc_sse_emit_pxor (p, tmp2, tmp3);
- orc_sse_emit_psrad_imm (p, 31, tmp3); // tmp3 is mask: ~0 is for clamping
+ orc_sse_emit_psrad_imm (p, 31, tmp3); /* tmp3 is mask: ~0 is for clamping */
orc_sse_emit_psrad_imm (p, 31, tmp2);
tmp = orc_compiler_get_constant (p, 4, 0x80000000);
- orc_sse_emit_pxor (p, tmp, tmp2); // clamped value
+ orc_sse_emit_pxor (p, tmp, tmp2); /* clamped value */
orc_sse_emit_pand (p, tmp3, tmp2);
orc_sse_emit_psubd (p, src, dest);
orc_rule_register (rule_set, "convql", sse_rule_convql, NULL);
orc_rule_register (rule_set, "convslq", sse_rule_convslq, NULL);
orc_rule_register (rule_set, "convulq", sse_rule_convulq, NULL);
- //orc_rule_register (rule_set, "convsssql", sse_rule_convsssql, NULL);
+ /* orc_rule_register (rule_set, "convsssql", sse_rule_convsssql, NULL); */
orc_rule_register (rule_set, "mulsbw", sse_rule_mulsbw, NULL);
orc_rule_register (rule_set, "mulubw", sse_rule_mulubw, NULL);
#define _ORC_UTILS_H_
/* Orc objects */
-//typedef struct _OrcVariable OrcVariable;
-//typedef struct _OrcOpcodeSet OrcOpcodeSet;
-//typedef struct _OrcStaticOpcode OrcStaticOpcode;
+/* typedef struct _OrcVariable OrcVariable; */
+/* typedef struct _OrcOpcodeSet OrcOpcodeSet; */
+/* typedef struct _OrcStaticOpcode OrcStaticOpcode; */
typedef struct _OrcInstruction OrcInstruction;
typedef struct _OrcProgram OrcProgram;
typedef struct _OrcCompiler OrcCompiler;
typedef struct _OrcConstant OrcConstant;
-//typedef struct _OrcFixup OrcFixup;
+/* typedef struct _OrcFixup OrcFixup; */
typedef struct _OrcTarget OrcTarget;
typedef struct _OrcCode OrcCode;
-//typedef struct _OrcCodeChunk OrcCodeChunk;
+/* typedef struct _OrcCodeChunk OrcCodeChunk; */
typedef enum {
ORC_COMPILE_RESULT_OK = 0,
double weights_ginger[];
double weights_feathers[];
-//double weights_preston[];
+/* double weights_preston[]; */
double weights_n900[];
int
double weight;
perf = orc_test_performance_full (programs[i], 0, NULL);
- //weight = weights_ginger[i];
+ /* weight = weights_ginger[i]; */
weight = weights_feathers[i];
- //weight = weights_n900[i];
+ /* weight = weights_n900[i]; */
sum += weight * perf;
}
OrcProgram *p;
int level1, level2, level3;
int max;
- //const uint8_t zero = 0;
+ /* const uint8_t zero = 0; */
orc_init ();
- //cpufreq = 2333e6;
+ /* cpufreq = 2333e6; */
cpufreq = 1;
if (argc > 1) {
p = orc_program_new ();
orc_program_set_name (p, "orc_memcpy");
- //orc_program_set_name (p, "orc_memset");
+ /* orc_program_set_name (p, "orc_memset"); */
orc_program_add_destination (p, 1, "d1");
orc_program_add_source (p, 1, "s1");
- //orc_program_add_parameter (p, 1, "p1");
+ /* orc_program_add_parameter (p, 1, "p1"); */
orc_program_append (p, "copyb", ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1);
void (*func) (OrcExecutor *);
orc_profile_start(&prof);
- //orc_memcpy (dest, src, size);
+ /* orc_memcpy (dest, src, size); */
ex->program = p;
ex->n = size;
ex->arrays[ORC_VAR_D1] = dest;
ave -= null;
ave_libc -= null;
- //printf("%d: %10.4g %10.4g %10.4g %10.4g (libc %10.4g)\n", i, ave, std,
- // ave/(1<<i), cpufreq/(ave/(1<<i)),
- // cpufreq/(ave_libc/(1<<i)));
+ /* printf("%d: %10.4g %10.4g %10.4g %10.4g (libc %10.4g)\n", i, ave, std, */
+ /* ave/(1<<i), cpufreq/(ave/(1<<i)), */
+ /* cpufreq/(ave_libc/(1<<i))); */
printf("%g %10.4g %10.4g\n", x,
cpufreq/(ave/size), cpufreq/(ave_libc/size));
- //printf("%g %10.4g %10.4g\n", x,
- // 32*(ave/(size)), 32*(ave_libc/(size)));
+ /* printf("%g %10.4g %10.4g\n", x, */
+ /* 32*(ave/(size)), 32*(ave_libc/(size))); */
fflush (stdout);
}
opcode_set = orc_opcode_set_get ("sys");
for(i=0;i<opcode_set->n_opcodes;i++){
- //printf("opcode_%-20s ", opcode_set->opcodes[i].name);
+ /* printf("opcode_%-20s ", opcode_set->opcodes[i].name); */
test_opcode_src (opcode_set->opcodes + i);
}
orc_test_init();
for(i=0;i<18;i++){
- //printf("/* %d */\n", i);
+#if 0
+ printf("/* %d */\n", i);
+#endif
test_program (i);
}
return 0;
}
- //printf("%s\n", orc_program_get_asm_code (p));
+ /* printf("%s\n", orc_program_get_asm_code (p)); */
}
ex = orc_executor_new (p);
orc_executor_run (ex);
- //sum = orc_executor_get_accumulator (ex, "a1");
+ /* sum = orc_executor_get_accumulator (ex, "a1"); */
sum = ex->accumulators[0];
orc_executor_free (ex);
bytecode = orc_bytecode_from_program (p);
fprintf(output, "#if 1\n");
- //fprintf(output, "#ifdef bytecode\n");
+ /* fprintf(output, "#ifdef bytecode\n"); */
fprintf(output, " static const orc_uint8 bc[] = {\n");
for(i=0;i<bytecode->length;i++) {
if ((i&0xf) == 0) {
}
fprintf(output, " };\n");
fprintf(output, " p = orc_program_new_from_static_bytecode (bc);\n");
- //fprintf(output, " orc_program_set_name (p, \"%s\");\n", p->name);
+ /* fprintf(output, " orc_program_set_name (p, \"%s\");\n", p->name); */
if (use_backup && !is_inline) {
fprintf(output, " orc_program_set_backup_function (p, _backup_%s);\n",
p->name);
{
fprintf(output, "/* %s */\n", p->name);
- //output_prototype (p, output);
+ /* output_prototype (p, output); */
{
OrcCompileResult result;
OrcTarget *t = orc_target_get_by_name(target);