summaryrefslogtreecommitdiff
path: root/orc/orcprogram-c.c
diff options
context:
space:
mode:
Diffstat (limited to 'orc/orcprogram-c.c')
-rw-r--r--orc/orcprogram-c.c911
1 files changed, 463 insertions, 448 deletions
diff --git a/orc/orcprogram-c.c b/orc/orcprogram-c.c
index dac0fe6..295e7c6 100644
--- a/orc/orcprogram-c.c
+++ b/orc/orcprogram-c.c
@@ -10,16 +10,17 @@
#include <orc/orcdebug.h>
static const char *c_get_type_name (int size);
-static void c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var);
+static void c_get_name_int (char *name, OrcCompiler * p, OrcInstruction * insn,
+ int var);
void orc_c_init (void);
void
-orc_compiler_c_init (OrcCompiler *compiler)
+orc_compiler_c_init (OrcCompiler * compiler)
{
int i;
- for(i=ORC_GP_REG_BASE;i<ORC_GP_REG_BASE+32;i++){
+ for (i = ORC_GP_REG_BASE; i < ORC_GP_REG_BASE + 32; i++) {
compiler->valid_regs[i] = 1;
}
compiler->loop_shift = 0;
@@ -29,108 +30,103 @@ const char *
orc_target_c_get_typedefs (void)
{
return
- "#ifndef _ORC_INTEGER_TYPEDEFS_\n"
- "#define _ORC_INTEGER_TYPEDEFS_\n"
- "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
- "#include <stdint.h>\n"
- "typedef int8_t orc_int8;\n"
- "typedef int16_t orc_int16;\n"
- "typedef int32_t orc_int32;\n"
- "typedef int64_t orc_int64;\n"
- "typedef uint8_t orc_uint8;\n"
- "typedef uint16_t orc_uint16;\n"
- "typedef uint32_t orc_uint32;\n"
- "typedef uint64_t orc_uint64;\n"
- "#define ORC_UINT64_C(x) UINT64_C(x)\n"
- "#elif defined(_MSC_VER)\n"
- "typedef signed __int8 orc_int8;\n"
- "typedef signed __int16 orc_int16;\n"
- "typedef signed __int32 orc_int32;\n"
- "typedef signed __int64 orc_int64;\n"
- "typedef unsigned __int8 orc_uint8;\n"
- "typedef unsigned __int16 orc_uint16;\n"
- "typedef unsigned __int32 orc_uint32;\n"
- "typedef unsigned __int64 orc_uint64;\n"
- "#define ORC_UINT64_C(x) (x##Ui64)\n"
- "#define inline __inline\n"
- "#else\n"
- "#include <limits.h>\n"
- "typedef signed char orc_int8;\n"
- "typedef short orc_int16;\n"
- "typedef int orc_int32;\n"
- "typedef unsigned char orc_uint8;\n"
- "typedef unsigned short orc_uint16;\n"
- "typedef unsigned int orc_uint32;\n"
- "#if INT_MAX == LONG_MAX\n"
- "typedef long long orc_int64;\n"
- "typedef unsigned long long orc_uint64;\n"
- "#define ORC_UINT64_C(x) (x##ULL)\n"
- "#else\n"
- "typedef long orc_int64;\n"
- "typedef unsigned long orc_uint64;\n"
- "#define ORC_UINT64_C(x) (x##UL)\n"
- "#endif\n"
- "#endif\n"
- "typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;\n"
- "typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;\n"
- "typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;\n"
- "#endif\n"
- "#ifndef ORC_RESTRICT\n"
- "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
- "#define ORC_RESTRICT restrict\n"
- "#elif defined(__GNUC__) && __GNUC__ >= 4\n"
- "#define ORC_RESTRICT __restrict__\n"
- "#else\n"
- "#define ORC_RESTRICT\n"
- "#endif\n"
- "#endif\n";
+ "#ifndef _ORC_INTEGER_TYPEDEFS_\n"
+ "#define _ORC_INTEGER_TYPEDEFS_\n"
+ "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
+ "#include <stdint.h>\n"
+ "typedef int8_t orc_int8;\n"
+ "typedef int16_t orc_int16;\n"
+ "typedef int32_t orc_int32;\n"
+ "typedef int64_t orc_int64;\n"
+ "typedef uint8_t orc_uint8;\n"
+ "typedef uint16_t orc_uint16;\n"
+ "typedef uint32_t orc_uint32;\n"
+ "typedef uint64_t orc_uint64;\n"
+ "#define ORC_UINT64_C(x) UINT64_C(x)\n"
+ "#elif defined(_MSC_VER)\n"
+ "typedef signed __int8 orc_int8;\n"
+ "typedef signed __int16 orc_int16;\n"
+ "typedef signed __int32 orc_int32;\n"
+ "typedef signed __int64 orc_int64;\n"
+ "typedef unsigned __int8 orc_uint8;\n"
+ "typedef unsigned __int16 orc_uint16;\n"
+ "typedef unsigned __int32 orc_uint32;\n"
+ "typedef unsigned __int64 orc_uint64;\n"
+ "#define ORC_UINT64_C(x) (x##Ui64)\n"
+ "#define inline __inline\n"
+ "#else\n"
+ "#include <limits.h>\n"
+ "typedef signed char orc_int8;\n"
+ "typedef short orc_int16;\n"
+ "typedef int orc_int32;\n"
+ "typedef unsigned char orc_uint8;\n"
+ "typedef unsigned short orc_uint16;\n"
+ "typedef unsigned int orc_uint32;\n"
+ "#if INT_MAX == LONG_MAX\n"
+ "typedef long long orc_int64;\n"
+ "typedef unsigned long long orc_uint64;\n"
+ "#define ORC_UINT64_C(x) (x##ULL)\n"
+ "#else\n"
+ "typedef long orc_int64;\n"
+ "typedef unsigned long orc_uint64;\n"
+ "#define ORC_UINT64_C(x) (x##UL)\n"
+ "#endif\n"
+ "#endif\n"
+ "typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;\n"
+ "typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;\n"
+ "typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64;\n"
+ "#endif\n"
+ "#ifndef ORC_RESTRICT\n"
+ "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
+ "#define ORC_RESTRICT restrict\n"
+ "#elif defined(__GNUC__) && __GNUC__ >= 4\n"
+ "#define ORC_RESTRICT __restrict__\n"
+ "#else\n" "#define ORC_RESTRICT\n" "#endif\n" "#endif\n";
}
const char *
orc_target_c_get_asm_preamble (void)
{
return "\n"
- "/* begin Orc C target preamble */\n"
- "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n"
- "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n"
- "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n"
- "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n"
- "#define ORC_SB_MAX 127\n"
- "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n"
- "#define ORC_UB_MAX 255\n"
- "#define ORC_UB_MIN 0\n"
- "#define ORC_SW_MAX 32767\n"
- "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n"
- "#define ORC_UW_MAX 65535\n"
- "#define ORC_UW_MIN 0\n"
- "#define ORC_SL_MAX 2147483647\n"
- "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n"
- "#define ORC_UL_MAX 4294967295U\n"
- "#define ORC_UL_MIN 0\n"
- "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n"
- "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n"
- "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n"
- "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n"
- "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n"
- "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n"
- "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n"
- "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n"
- "#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))\n"
- "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n"
- "#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))\n"
- "#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))\n"
- "#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))\n"
- "#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))\n"
- "#ifndef ORC_RESTRICT\n"
- "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
- "#define ORC_RESTRICT restrict\n"
- "#elif defined(__GNUC__) && __GNUC__ >= 4\n"
- "#define ORC_RESTRICT __restrict__\n"
- "#else\n"
- "#define ORC_RESTRICT\n"
- "#endif\n"
- "#endif\n"
- "/* end Orc C target preamble */\n\n";
+ "/* begin Orc C target preamble */\n"
+ "#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))\n"
+ "#define ORC_ABS(a) ((a)<0 ? -(a) : (a))\n"
+ "#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))\n"
+ "#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))\n"
+ "#define ORC_SB_MAX 127\n"
+ "#define ORC_SB_MIN (-1-ORC_SB_MAX)\n"
+ "#define ORC_UB_MAX 255\n"
+ "#define ORC_UB_MIN 0\n"
+ "#define ORC_SW_MAX 32767\n"
+ "#define ORC_SW_MIN (-1-ORC_SW_MAX)\n"
+ "#define ORC_UW_MAX 65535\n"
+ "#define ORC_UW_MIN 0\n"
+ "#define ORC_SL_MAX 2147483647\n"
+ "#define ORC_SL_MIN (-1-ORC_SL_MAX)\n"
+ "#define ORC_UL_MAX 4294967295U\n"
+ "#define ORC_UL_MIN 0\n"
+ "#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)\n"
+ "#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)\n"
+ "#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)\n"
+ "#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)\n"
+ "#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)\n"
+ "#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)\n"
+ "#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))\n"
+ "#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))\n"
+ "#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))\n"
+ "#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))\n"
+ "#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))\n"
+ "#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))\n"
+ "#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))\n"
+ "#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))\n"
+ "#ifndef ORC_RESTRICT\n"
+ "#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n"
+ "#define ORC_RESTRICT restrict\n"
+ "#elif defined(__GNUC__) && __GNUC__ >= 4\n"
+ "#define ORC_RESTRICT __restrict__\n"
+ "#else\n"
+ "#define ORC_RESTRICT\n"
+ "#endif\n" "#endif\n" "/* end Orc C target preamble */\n\n";
}
unsigned int
@@ -155,37 +151,37 @@ static const char *varnames[] = {
};
static void
-get_varname (char *s, OrcCompiler *compiler, int var)
+get_varname (char *s, OrcCompiler * compiler, int var)
{
if (compiler->target_flags & ORC_TARGET_C_NOEXEC) {
if (var < 48) {
strcpy (s, varnames[var]);
} else {
- sprintf(s, "t%d", var-32);
+ sprintf (s, "t%d", var - 32);
}
} else if (compiler->target_flags & ORC_TARGET_C_OPCODE) {
if (var < ORC_VAR_S1) {
- sprintf(s, "ex->dest_ptrs[%d]", var-ORC_VAR_D1);
+ sprintf (s, "ex->dest_ptrs[%d]", var - ORC_VAR_D1);
} else {
- sprintf(s, "ex->src_ptrs[%d]", var-ORC_VAR_S1);
+ sprintf (s, "ex->src_ptrs[%d]", var - ORC_VAR_S1);
}
} else {
- sprintf(s, "ex->arrays[%d]", var);
+ sprintf (s, "ex->arrays[%d]", var);
}
}
static void
-get_varname_stride (char *s, OrcCompiler *compiler, int var)
+get_varname_stride (char *s, OrcCompiler * compiler, int var)
{
if (compiler->target_flags & ORC_TARGET_C_NOEXEC) {
- sprintf(s, "%s_stride", varnames[var]);
+ sprintf (s, "%s_stride", varnames[var]);
} else {
- sprintf(s, "ex->params[%d]", var);
+ sprintf (s, "ex->params[%d]", var);
}
}
void
-orc_compiler_c_assemble (OrcCompiler *compiler)
+orc_compiler_c_assemble (OrcCompiler * compiler)
{
int i;
int j;
@@ -195,119 +191,117 @@ orc_compiler_c_assemble (OrcCompiler *compiler)
int prefix = 0;
if (!(compiler->target_flags & ORC_TARGET_C_BARE)) {
- ORC_ASM_CODE(compiler,"void\n");
- ORC_ASM_CODE(compiler,"%s (OrcExecutor *ex)\n", compiler->program->name);
- ORC_ASM_CODE(compiler,"{\n");
+ ORC_ASM_CODE (compiler, "void\n");
+ ORC_ASM_CODE (compiler, "%s (OrcExecutor *ex)\n", compiler->program->name);
+ ORC_ASM_CODE (compiler, "{\n");
}
- ORC_ASM_CODE(compiler,"%*s int i;\n", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s int i;\n", prefix, "");
if (compiler->program->is_2d) {
- ORC_ASM_CODE(compiler," int j;\n");
+ ORC_ASM_CODE (compiler, " int j;\n");
}
if (compiler->program->constant_n == 0) {
if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC) &&
!(compiler->target_flags & ORC_TARGET_C_OPCODE)) {
- ORC_ASM_CODE(compiler," int n = ex->n;\n");
+ ORC_ASM_CODE (compiler, " int n = ex->n;\n");
}
} else {
- ORC_ASM_CODE(compiler," int n = %d;\n", compiler->program->constant_n);
+ ORC_ASM_CODE (compiler, " int n = %d;\n", compiler->program->constant_n);
}
if (compiler->program->is_2d) {
if (compiler->program->constant_m == 0) {
if (!(compiler->target_flags & ORC_TARGET_C_NOEXEC)) {
- ORC_ASM_CODE(compiler," int m = ex->params[ORC_VAR_A1];\n");
+ ORC_ASM_CODE (compiler, " int m = ex->params[ORC_VAR_A1];\n");
}
} else {
- ORC_ASM_CODE(compiler," int m = %d;\n", compiler->program->constant_m);
+ ORC_ASM_CODE (compiler, " int m = %d;\n", compiler->program->constant_m);
}
}
- for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){
+ for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) {
OrcVariable *var = compiler->vars + i;
- if (var->name == NULL) continue;
+ if (var->name == NULL)
+ continue;
switch (var->vartype) {
case ORC_VAR_TYPE_CONST:
break;
case ORC_VAR_TYPE_TEMP:
if (!(var->last_use == -1 && var->first_use == 0)) {
- ORC_ASM_CODE(compiler," %s var%d;\n", c_get_type_name(var->size), i);
+ ORC_ASM_CODE (compiler, " %s var%d;\n", c_get_type_name (var->size),
+ i);
}
break;
case ORC_VAR_TYPE_SRC:
- ORC_ASM_CODE(compiler," const %s * ORC_RESTRICT ptr%d;\n",
- c_get_type_name (var->size),
- i);
+ ORC_ASM_CODE (compiler, " const %s * ORC_RESTRICT ptr%d;\n",
+ c_get_type_name (var->size), i);
break;
case ORC_VAR_TYPE_DEST:
- ORC_ASM_CODE(compiler," %s * ORC_RESTRICT ptr%d;\n",
- c_get_type_name (var->size),
- i);
+ ORC_ASM_CODE (compiler, " %s * ORC_RESTRICT ptr%d;\n",
+ c_get_type_name (var->size), i);
break;
case ORC_VAR_TYPE_ACCUMULATOR:
if (var->size >= 2) {
- ORC_ASM_CODE(compiler," %s var%d = { 0 };\n",
- c_get_type_name (var->size),
- i);
+ ORC_ASM_CODE (compiler, " %s var%d = { 0 };\n",
+ c_get_type_name (var->size), i);
} else {
- ORC_ASM_CODE(compiler," %s var%d = 0;\n",
- c_get_type_name (var->size),
- i);
+ ORC_ASM_CODE (compiler, " %s var%d = 0;\n",
+ c_get_type_name (var->size), i);
}
break;
case ORC_VAR_TYPE_PARAM:
break;
default:
- ORC_COMPILER_ERROR(compiler, "bad vartype");
+ ORC_COMPILER_ERROR (compiler, "bad vartype");
break;
}
}
- ORC_ASM_CODE(compiler,"\n");
+ ORC_ASM_CODE (compiler, "\n");
if (compiler->program->is_2d) {
- ORC_ASM_CODE(compiler," for (j = 0; j < m; j++) {\n");
+ ORC_ASM_CODE (compiler, " for (j = 0; j < m; j++) {\n");
prefix = 2;
- for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){
+ for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) {
OrcVariable *var = compiler->vars + i;
- if (var->name == NULL) continue;
+ if (var->name == NULL)
+ continue;
switch (var->vartype) {
case ORC_VAR_TYPE_SRC:
- {
- char s1[40], s2[40];
- get_varname(s1, compiler, i);
- get_varname_stride(s2, compiler, i);
- ORC_ASM_CODE(compiler,
- " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n",
- i, s1, s2);
- }
+ {
+ char s1[40], s2[40];
+ get_varname (s1, compiler, i);
+ get_varname_stride (s2, compiler, i);
+ ORC_ASM_CODE (compiler,
+ " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", i, s1, s2);
+ }
break;
case ORC_VAR_TYPE_DEST:
- {
- char s1[40], s2[40];
- get_varname(s1, compiler, i),
- get_varname_stride(s2, compiler, i),
- ORC_ASM_CODE(compiler,
- " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n",
- i, s1, s2);
- }
+ {
+ char s1[40], s2[40];
+ get_varname (s1, compiler, i),
+ get_varname_stride (s2, compiler, i),
+ ORC_ASM_CODE (compiler,
+ " ptr%d = ORC_PTR_OFFSET(%s, %s * j);\n", i, s1, s2);
+ }
break;
default:
break;
}
}
} else {
- for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){
+ for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) {
OrcVariable *var = compiler->vars + i;
char s[40];
- if (var->name == NULL) continue;
- get_varname(s, compiler, i);
+ if (var->name == NULL)
+ continue;
+ get_varname (s, compiler, i);
switch (var->vartype) {
case ORC_VAR_TYPE_SRC:
- ORC_ASM_CODE(compiler," ptr%d = (%s *)%s;\n", i,
+ ORC_ASM_CODE (compiler, " ptr%d = (%s *)%s;\n", i,
c_get_type_name (var->size), s);
break;
case ORC_VAR_TYPE_DEST:
- ORC_ASM_CODE(compiler," ptr%d = (%s *)%s;\n", i,
+ ORC_ASM_CODE (compiler, " ptr%d = (%s *)%s;\n", i,
c_get_type_name (var->size), s);
break;
default:
@@ -316,111 +310,114 @@ orc_compiler_c_assemble (OrcCompiler *compiler)
}
}
- ORC_ASM_CODE(compiler,"\n");
- for(j=0;j<compiler->n_insns;j++){
+ ORC_ASM_CODE (compiler, "\n");
+ for (j = 0; j < compiler->n_insns; j++) {
insn = compiler->insns + j;
opcode = insn->opcode;
- if (!(insn->flags & ORC_INSN_FLAG_INVARIANT)) continue;
+ if (!(insn->flags & ORC_INSN_FLAG_INVARIANT))
+ continue;
- ORC_ASM_CODE(compiler,"%*s /* %d: %s */\n", prefix, "",
+ ORC_ASM_CODE (compiler, "%*s /* %d: %s */\n", prefix, "",
j, insn->opcode->name);
rule = insn->rule;
if (!rule) {
- ORC_COMPILER_ERROR(compiler, "No rule for: %s on target %s", opcode->name,
- compiler->target->name);
+ ORC_COMPILER_ERROR (compiler, "No rule for: %s on target %s",
+ opcode->name, compiler->target->name);
continue;
}
- ORC_ASM_CODE(compiler,"%*s", prefix, "");
- if (insn->flags & (ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4)) {
+ ORC_ASM_CODE (compiler, "%*s", prefix, "");
+ if (insn->flags & (ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4)) {
int n;
if (insn->flags & ORC_INSTRUCTION_FLAG_X2) {
n = 2;
} else {
n = 4;
}
- for(i=0;i<n;i++){
+ for (i = 0; i < n; i++) {
compiler->unroll_index = i;
- ORC_ASM_CODE(compiler,"%*s", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s", prefix, "");
rule->emit (compiler, rule->emit_user, insn);
}
} else {
- ORC_ASM_CODE(compiler,"%*s", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s", prefix, "");
rule->emit (compiler, rule->emit_user, insn);
}
}
- ORC_ASM_CODE(compiler,"\n");
- ORC_ASM_CODE(compiler,"%*s for (i = 0; i < n; i++) {\n", prefix, "");
+ ORC_ASM_CODE (compiler, "\n");
+ ORC_ASM_CODE (compiler, "%*s for (i = 0; i < n; i++) {\n", prefix, "");
/* Emit instructions */
- for(j=0;j<compiler->n_insns;j++){
+ for (j = 0; j < compiler->n_insns; j++) {
insn = compiler->insns + j;
opcode = insn->opcode;
- if (insn->flags & ORC_INSN_FLAG_INVARIANT) continue;
+ if (insn->flags & ORC_INSN_FLAG_INVARIANT)
+ continue;
- ORC_ASM_CODE(compiler,"%*s /* %d: %s */\n", prefix, "",
+ ORC_ASM_CODE (compiler, "%*s /* %d: %s */\n", prefix, "",
j, insn->opcode->name);
rule = insn->rule;
if (!rule) {
- ORC_COMPILER_ERROR(compiler, "No rule for: %s on target %s", opcode->name,
- compiler->target->name);
+ ORC_COMPILER_ERROR (compiler, "No rule for: %s on target %s",
+ opcode->name, compiler->target->name);
continue;
}
- if (insn->flags & (ORC_INSTRUCTION_FLAG_X2|ORC_INSTRUCTION_FLAG_X4)) {
+ if (insn->flags & (ORC_INSTRUCTION_FLAG_X2 | ORC_INSTRUCTION_FLAG_X4)) {
int n;
if (insn->flags & ORC_INSTRUCTION_FLAG_X2) {
n = 2;
} else {
n = 4;
}
- for(i=0;i<n;i++){
+ for (i = 0; i < n; i++) {
compiler->unroll_index = i;
- ORC_ASM_CODE(compiler,"%*s", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s", prefix, "");
rule->emit (compiler, rule->emit_user, insn);
}
} else {
- ORC_ASM_CODE(compiler,"%*s", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s", prefix, "");
rule->emit (compiler, rule->emit_user, insn);
}
}
- ORC_ASM_CODE(compiler,"%*s }\n", prefix, "");
+ ORC_ASM_CODE (compiler, "%*s }\n", prefix, "");
if (compiler->program->is_2d) {
- ORC_ASM_CODE(compiler," }\n");
+ ORC_ASM_CODE (compiler, " }\n");
}
- for(i=0;i<ORC_N_COMPILER_VARIABLES;i++){
+ for (i = 0; i < ORC_N_COMPILER_VARIABLES; i++) {
char varname[40];
OrcVariable *var = compiler->vars + i;
- if (var->name == NULL) continue;
+ if (var->name == NULL)
+ continue;
switch (var->vartype) {
case ORC_VAR_TYPE_ACCUMULATOR:
c_get_name_int (varname, compiler, NULL, i);
if (var->size == 2) {
if (compiler->target_flags & ORC_TARGET_C_NOEXEC) {
- ORC_ASM_CODE(compiler," *%s = (%s & 0xffff);\n",
+ ORC_ASM_CODE (compiler, " *%s = (%s & 0xffff);\n",
varnames[i], varname);
} else if (compiler->target_flags & ORC_TARGET_C_OPCODE) {
- ORC_ASM_CODE(compiler," ((orc_union32 *)ex->dest_ptrs[%d])->i = "
+ ORC_ASM_CODE (compiler, " ((orc_union32 *)ex->dest_ptrs[%d])->i = "
"(%s + ((orc_union32 *)ex->dest_ptrs[%d])->i) & 0xffff;\n",
i - ORC_VAR_A1, varname, i - ORC_VAR_A1);
} else {
- ORC_ASM_CODE(compiler," ex->accumulators[%d] = (%s & 0xffff);\n",
+ ORC_ASM_CODE (compiler, " ex->accumulators[%d] = (%s & 0xffff);\n",
i - ORC_VAR_A1, varname);
}
} else {
if (compiler->target_flags & ORC_TARGET_C_NOEXEC) {
- ORC_ASM_CODE(compiler," *%s = %s;\n",
- varnames[i], varname);
+ ORC_ASM_CODE (compiler, " *%s = %s;\n", varnames[i], varname);
} else if (compiler->target_flags & ORC_TARGET_C_OPCODE) {
- ORC_ASM_CODE(compiler," ((orc_union32 *)ex->dest_ptrs[%d])->i += %s;\n",
+ ORC_ASM_CODE (compiler,
+ " ((orc_union32 *)ex->dest_ptrs[%d])->i += %s;\n",
i - ORC_VAR_A1, varname);
} else {
- ORC_ASM_CODE(compiler," ex->accumulators[%d] = %s;\n",
+ ORC_ASM_CODE (compiler, " ex->accumulators[%d] = %s;\n",
i - ORC_VAR_A1, varname);
}
}
@@ -431,8 +428,8 @@ orc_compiler_c_assemble (OrcCompiler *compiler)
}
if (!(compiler->target_flags & ORC_TARGET_C_BARE)) {
- ORC_ASM_CODE(compiler,"}\n");
- ORC_ASM_CODE(compiler,"\n");
+ ORC_ASM_CODE (compiler, "}\n");
+ ORC_ASM_CODE (compiler, "\n");
}
}
@@ -440,66 +437,66 @@ orc_compiler_c_assemble (OrcCompiler *compiler)
/* rules */
static void
-c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var)
+c_get_name_int (char *name, OrcCompiler * p, OrcInstruction * insn, int var)
{
if (p->vars[var].vartype == ORC_VAR_TYPE_PARAM) {
if (p->target_flags & ORC_TARGET_C_NOEXEC) {
- sprintf(name,"%s", varnames[var]);
+ sprintf (name, "%s", varnames[var]);
} else if (p->target_flags & ORC_TARGET_C_OPCODE) {
- sprintf(name,"((orc_union64 *)(ex->src_ptrs[%d]))->i",
+ sprintf (name, "((orc_union64 *)(ex->src_ptrs[%d]))->i",
var - ORC_VAR_P1 + p->program->n_src_vars);
} else {
switch (p->vars[var].param_type) {
case ORC_PARAM_TYPE_INT:
- sprintf(name,"ex->params[%d]", var);
+ sprintf (name, "ex->params[%d]", var);
break;
case ORC_PARAM_TYPE_FLOAT:
- sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var);
+ sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var);
break;
case ORC_PARAM_TYPE_INT64:
/* FIXME */
- sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var);
+ sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var);
break;
case ORC_PARAM_TYPE_DOUBLE:
/* FIXME */
- sprintf(name,"((orc_union32 *)(ex->params+%d))->i", var);
+ sprintf (name, "((orc_union32 *)(ex->params+%d))->i", var);
break;
default:
- ORC_ASSERT(0);
+ ORC_ASSERT (0);
}
}
} else if (p->vars[var].vartype == ORC_VAR_TYPE_CONST) {
if (p->vars[var].value.i == 0x80000000) {
- sprintf(name,"0x80000000");
+ sprintf (name, "0x80000000");
} else {
- if (p->vars[var].value.i == (int)p->vars[var].value.i) {
- sprintf(name, "%d", (int)p->vars[var].value.i);
+ if (p->vars[var].value.i == (int) p->vars[var].value.i) {
+ sprintf (name, "%d", (int) p->vars[var].value.i);
} else {
- ORC_ASSERT(0);
+ ORC_ASSERT (0);
}
}
} else {
if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) {
- sprintf(name, "var%d.x2[%d]", var, p->unroll_index);
+ sprintf (name, "var%d.x2[%d]", var, p->unroll_index);
} else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) {
- sprintf(name, "var%d.x4[%d]", var, p->unroll_index);
+ sprintf (name, "var%d.x4[%d]", var, p->unroll_index);
} else {
if (p->vars[var].size >= 2) {
- sprintf(name, "var%d.i", var);
+ sprintf (name, "var%d.i", var);
} else {
- sprintf(name, "var%d", var);
+ sprintf (name, "var%d", var);
}
}
}
}
static void
-c_get_name_float (char *name, OrcCompiler *p, OrcInstruction *insn, int var)
+c_get_name_float (char *name, OrcCompiler * p, OrcInstruction * insn, int var)
{
if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) {
- sprintf(name, "var%d.x2f[%d]", var, p->unroll_index);
+ sprintf (name, "var%d.x2f[%d]", var, p->unroll_index);
} else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) {
- sprintf(name, "var%d.x4f[%d]", var, p->unroll_index);
+ sprintf (name, "var%d.x4f[%d]", var, p->unroll_index);
} else {
switch (p->vars[var].vartype) {
case ORC_VAR_TYPE_CONST:
@@ -507,14 +504,14 @@ c_get_name_float (char *name, OrcCompiler *p, OrcInstruction *insn, int var)
case ORC_VAR_TYPE_ACCUMULATOR:
case ORC_VAR_TYPE_SRC:
case ORC_VAR_TYPE_DEST:
- sprintf(name, "var%d.f", var);
+ sprintf (name, "var%d.f", var);
break;
case ORC_VAR_TYPE_PARAM:
- sprintf(name, "var%d", var);
+ sprintf (name, "var%d", var);
break;
default:
- ORC_COMPILER_ERROR(p, "bad vartype");
- sprintf(name, "ERROR");
+ ORC_COMPILER_ERROR (p, "bad vartype");
+ sprintf (name, "ERROR");
break;
}
}
@@ -767,53 +764,54 @@ c_rule_ ## name (OrcCompiler *p, void *user, OrcInstruction *insn) \
static void
-c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadpX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40];
- int size = ORC_PTR_TO_INT(user);
+ int size = ORC_PTR_TO_INT (user);
if ((p->target_flags & ORC_TARGET_C_NOEXEC) &&
(p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_FLOAT ||
- p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_DOUBLE))
+ p->vars[insn->src_args[0]].param_type == ORC_PARAM_TYPE_DOUBLE))
c_get_name_float (dest, p, insn, insn->dest_args[0]);
else
c_get_name_int (dest, p, insn, insn->dest_args[0]);
if (p->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_PARAM) {
if (p->target_flags & ORC_TARGET_C_NOEXEC) {
- ORC_ASM_CODE(p," %s = %s;\n", dest, varnames[insn->src_args[0]]);
+ ORC_ASM_CODE (p, " %s = %s;\n", dest, varnames[insn->src_args[0]]);
} else if (p->target_flags & ORC_TARGET_C_OPCODE) {
- ORC_ASM_CODE(p," %s = ((orc_union64 *)(ex->src_ptrs[%d]))->i;\n",
+ ORC_ASM_CODE (p, " %s = ((orc_union64 *)(ex->src_ptrs[%d]))->i;\n",
dest, insn->src_args[0] - ORC_VAR_P1 + p->program->n_src_vars);
} else {
if (size == 8) {
- ORC_ASM_CODE(p," %s = (ex->params[%d] & 0xffffffff) | ((orc_uint64)(ex->params[%d + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);\n",
+ ORC_ASM_CODE (p,
+ " %s = (ex->params[%d] & 0xffffffff) | ((orc_uint64)(ex->params[%d + (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);\n",
dest, insn->src_args[0], insn->src_args[0]);
} else {
- ORC_ASM_CODE(p," %s = ex->params[%d];\n", dest,
- insn->src_args[0]);
+ ORC_ASM_CODE (p, " %s = ex->params[%d];\n", dest, insn->src_args[0]);
}
}
} else if (p->vars[insn->src_args[0]].vartype == ORC_VAR_TYPE_CONST) {
if (p->vars[insn->src_args[0]].size <= 4) {
- ORC_ASM_CODE(p," %s = (int)0x%08x; /* %d or %gf */\n", dest,
- (unsigned int)p->vars[insn->src_args[0]].value.i,
- (int)p->vars[insn->src_args[0]].value.i,
+ ORC_ASM_CODE (p, " %s = (int)0x%08x; /* %d or %gf */\n", dest,
+ (unsigned int) p->vars[insn->src_args[0]].value.i,
+ (int) p->vars[insn->src_args[0]].value.i,
p->vars[insn->src_args[0]].value.f);
} else {
- ORC_ASM_CODE(p," %s = ORC_UINT64_C(0x%08x%08x); /* %gf */\n", dest,
- (orc_uint32)(((orc_uint64)p->vars[insn->src_args[0]].value.i)>>32),
- ((orc_uint32)p->vars[insn->src_args[0]].value.i),
+ ORC_ASM_CODE (p, " %s = ORC_UINT64_C(0x%08x%08x); /* %gf */\n", dest,
+ (orc_uint32) (((orc_uint64) p->vars[insn->src_args[0]].
+ value.i) >> 32),
+ ((orc_uint32) p->vars[insn->src_args[0]].value.i),
p->vars[insn->src_args[0]].value.f);
}
} else {
- ORC_COMPILER_ERROR(p, "expected param or constant");
+ ORC_COMPILER_ERROR (p, "expected param or constant");
}
}
#if 0
static void
-c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadpX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40];
char src[40];
@@ -824,25 +822,25 @@ c_rule_loadpX (OrcCompiler *p, void *user, OrcInstruction *insn)
var = &p->vars[insn->src_args[0]];
- ORC_ASM_CODE(p," %s = %s;\n", dest, src);
+ ORC_ASM_CODE (p, " %s = %s;\n", dest, src);
}
#endif
static void
-c_rule_loadX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," var%d = ptr%d[offset + i];\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " var%d = ptr%d[offset + i];\n", insn->dest_args[0],
insn->src_args[0]);
} else {
- ORC_ASM_CODE(p," var%d = ptr%d[i];\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " var%d = ptr%d[i];\n", insn->dest_args[0],
insn->src_args[0]);
}
}
static void
-c_rule_loadoffX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadoffX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char src[40];
@@ -850,44 +848,46 @@ c_rule_loadoffX (OrcCompiler *p, void *user, OrcInstruction *insn)
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," var%d = ptr%d[offset + i + %s];\n", insn->dest_args[0],
- insn->src_args[0], src);
+ ORC_ASM_CODE (p, " var%d = ptr%d[offset + i + %s];\n",
+ insn->dest_args[0], insn->src_args[0], src);
} else {
- ORC_ASM_CODE(p," var%d = ptr%d[i + %s];\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " var%d = ptr%d[i + %s];\n", insn->dest_args[0],
insn->src_args[0], src);
}
}
static void
-c_rule_loadupdb (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadupdb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," var%d = ptr%d[(offset + i)>>1];\n", insn->dest_args[0],
- insn->src_args[0]);
+ ORC_ASM_CODE (p, " var%d = ptr%d[(offset + i)>>1];\n",
+ insn->dest_args[0], insn->src_args[0]);
} else {
- ORC_ASM_CODE(p," var%d = ptr%d[i>>1];\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " var%d = ptr%d[i>>1];\n", insn->dest_args[0],
insn->src_args[0]);
}
}
static void
-c_rule_loadupib (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_loadupib (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," var%d = ((offset + i)&1) ? ((orc_uint8)ptr%d[(offset + i)>>1] + (orc_uint8)ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n",
+ ORC_ASM_CODE (p,
+ " var%d = ((offset + i)&1) ? ((orc_uint8)ptr%d[(offset + i)>>1] + (orc_uint8)ptr%d[((offset + i)>>1)+1] + 1)>>1 : ptr%d[(offset + i)>>1];\n",
insn->dest_args[0], insn->src_args[0], insn->src_args[0],
insn->src_args[0]);
} else {
- ORC_ASM_CODE(p," var%d = (i&1) ? ((orc_uint8)ptr%d[i>>1] + (orc_uint8)ptr%d[(i>>1)+1] + 1)>>1 : ptr%d[i>>1];\n",
+ ORC_ASM_CODE (p,
+ " var%d = (i&1) ? ((orc_uint8)ptr%d[i>>1] + (orc_uint8)ptr%d[(i>>1)+1] + 1)>>1 : ptr%d[i>>1];\n",
insn->dest_args[0], insn->src_args[0], insn->src_args[0],
insn->src_args[0]);
}
}
static void
-c_rule_ldresnearX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_ldresnearX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char src1[40];
char src2[40];
@@ -897,16 +897,16 @@ c_rule_ldresnearX (OrcCompiler *p, void *user, OrcInstruction *insn)
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," var%d = ptr%d[(%s + (offset + i)*%s)>>16];\n",
+ ORC_ASM_CODE (p, " var%d = ptr%d[(%s + (offset + i)*%s)>>16];\n",
insn->dest_args[0], insn->src_args[0], src1, src2);
} else {
- ORC_ASM_CODE(p," var%d = ptr%d[(%s + i*%s)>>16];\n",
+ ORC_ASM_CODE (p, " var%d = ptr%d[(%s + i*%s)>>16];\n",
insn->dest_args[0], insn->src_args[0], src1, src2);
}
}
static void
-c_rule_ldreslinb (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_ldreslinb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char src1[40];
char src2[40];
@@ -914,20 +914,21 @@ c_rule_ldreslinb (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[1]);
c_get_name_int (src2, p, insn, insn->src_args[2]);
- ORC_ASM_CODE(p," {\n");
+ ORC_ASM_CODE (p, " {\n");
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," int tmp = %s + (offset + i) * %s;\n", src1, src2);
+ ORC_ASM_CODE (p, " int tmp = %s + (offset + i) * %s;\n", src1, src2);
} else {
- ORC_ASM_CODE(p," int tmp = %s + i * %s;\n", src1, src2);
+ ORC_ASM_CODE (p, " int tmp = %s + i * %s;\n", src1, src2);
}
- ORC_ASM_CODE(p," var%d = ((orc_uint8)ptr%d[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr%d[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;\n",
+ ORC_ASM_CODE (p,
+ " var%d = ((orc_uint8)ptr%d[tmp>>16] * (256-((tmp>>8)&0xff)) + (orc_uint8)ptr%d[(tmp>>16)+1] * ((tmp>>8)&0xff))>>8;\n",
insn->dest_args[0], insn->src_args[0], insn->src_args[0]);
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_ldreslinl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_ldreslinl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
int i;
char src1[40];
@@ -937,59 +938,61 @@ c_rule_ldreslinl (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src2, p, insn, insn->src_args[2]);
- ORC_ASM_CODE(p," {\n");
+ ORC_ASM_CODE (p, " {\n");
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," int tmp = %s + (offset + i) * %s;\n", src1, src2);
+ ORC_ASM_CODE (p, " int tmp = %s + (offset + i) * %s;\n", src1, src2);
} else {
- ORC_ASM_CODE(p," int tmp = %s + i * %s;\n", src1, src2);
+ ORC_ASM_CODE (p, " int tmp = %s + i * %s;\n", src1, src2);
}
- ORC_ASM_CODE(p," orc_union32 a = ptr%d[tmp>>16];\n", insn->src_args[0]);
- ORC_ASM_CODE(p," orc_union32 b = ptr%d[(tmp>>16)+1];\n", insn->src_args[0]);
- for (i=0;i<4;i++){
- ORC_ASM_CODE(p," var%d.x4[%d] = ((orc_uint8)a.x4[%d] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[%d] * ((tmp>>8)&0xff))>>8;\n",
+ ORC_ASM_CODE (p, " orc_union32 a = ptr%d[tmp>>16];\n", insn->src_args[0]);
+ ORC_ASM_CODE (p, " orc_union32 b = ptr%d[(tmp>>16)+1];\n",
+ insn->src_args[0]);
+ for (i = 0; i < 4; i++) {
+ ORC_ASM_CODE (p,
+ " var%d.x4[%d] = ((orc_uint8)a.x4[%d] * (256-((tmp>>8)&0xff)) + (orc_uint8)b.x4[%d] * ((tmp>>8)&0xff))>>8;\n",
insn->dest_args[0], i, i, i);
}
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_storeX (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_storeX (OrcCompiler * p, void *user, OrcInstruction * insn)
{
if (p->target_flags & ORC_TARGET_C_OPCODE &&
!(insn->flags & ORC_INSN_FLAG_ADDED)) {
- ORC_ASM_CODE(p," ptr%d[offset + i] = var%d;\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " ptr%d[offset + i] = var%d;\n", insn->dest_args[0],
insn->src_args[0]);
} else {
- ORC_ASM_CODE(p," ptr%d[i] = var%d;\n", insn->dest_args[0],
+ ORC_ASM_CODE (p, " ptr%d[i] = var%d;\n", insn->dest_args[0],
insn->src_args[0]);
}
}
static void
-c_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_accw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1);
+ ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1);
}
static void
-c_rule_accl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_accl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = %s + %s;\n", dest, dest, src1);
+ ORC_ASM_CODE (p, " %s = %s + %s;\n", dest, dest, src1);
}
static void
-c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_accsadubl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -997,13 +1000,13 @@ c_rule_accsadubl (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p,
+ ORC_ASM_CODE (p,
" %s = %s + ORC_ABS((orc_int32)(orc_uint8)%s - (orc_int32)(orc_uint8)%s);\n",
dest, dest, src1, src2);
}
static void
-c_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splitql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest1[40], dest2[40], src[40];
@@ -1011,16 +1014,16 @@ c_rule_splitql (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (dest2, p, insn, insn->dest_args[1]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union64 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splitlw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest1[40], dest2[40], src[40];
@@ -1028,16 +1031,16 @@ c_rule_splitlw (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (dest2, p, insn, insn->dest_args[1]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union32 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splitwb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest1[40], dest2[40], src[40];
@@ -1045,159 +1048,158 @@ c_rule_splitwb (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (dest2, p, insn, insn->dest_args[1]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union16 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest1);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest2);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union16 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest1);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest2);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select0ql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union64 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select1ql (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union64 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select0lw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union32 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select1lw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union32 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select0wb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union16 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[0];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union16 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[0];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_select1wb (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union16 _src;\n");
- ORC_ASM_CODE(p," _src.i = %s;\n", src);
- ORC_ASM_CODE(p," %s = _src.x2[1];\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union16 _src;\n");
+ ORC_ASM_CODE (p, " _src.i = %s;\n", src);
+ ORC_ASM_CODE (p, " %s = _src.x2[1];\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_splatbw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splatbw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = ((%s&0xff) << 8) | (%s&0xff);\n", dest, src, src);
+ ORC_ASM_CODE (p, " %s = ((%s&0xff) << 8) | (%s&0xff);\n", dest, src, src);
}
static void
-c_rule_splatbl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splatbl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p,
+ ORC_ASM_CODE (p,
" %s = ((%s&0xff) << 24) | ((%s&0xff)<<16) | ((%s&0xff) << 8) | (%s&0xff);\n",
dest, src, src, src, src);
}
static void
-c_rule_splatw3q (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_splatw3q (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p,
+ ORC_ASM_CODE (p,
" %s = ((((orc_uint64)%s)>>48) << 48) | "
"((((orc_uint64)%s)>>48)<<32) | "
"((((orc_uint64)%s)>>48) << 16) | "
- "((((orc_uint64)%s)>>48));\n",
- dest, src, src, src, src);
+ "((((orc_uint64)%s)>>48));\n", dest, src, src, src, src);
}
static void
-c_rule_div255w (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_div255w (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p,
+ ORC_ASM_CODE (p,
" %s = ((orc_uint16)(((orc_uint16)(%s+128)) + (((orc_uint16)(%s+128))>>8)))>>8;\n",
dest, src, src);
}
static void
-c_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_divluw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1205,67 +1207,67 @@ c_rule_divluw (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p,
+ ORC_ASM_CODE (p,
" %s = ((%s&0xff) == 0) ? 255 : ORC_CLAMP_UB(((orc_uint16)%s)/((orc_uint16)%s&0xff));\n",
dest, src2, src1, src2);
}
static void
-c_rule_convlf (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convlf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_float (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = %s;\n", dest, src1);
+ ORC_ASM_CODE (p, " %s = %s;\n", dest, src1);
}
static void
-c_rule_convld (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convld (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_float (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = %s;\n", dest, src1);
+ ORC_ASM_CODE (p, " %s = %s;\n", dest, src1);
}
static void
-c_rule_convfd (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convfd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_float (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union32 _src1;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1);
- ORC_ASM_CODE(p," %s = _src1.f;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src1;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1);
+ ORC_ASM_CODE (p, " %s = _src1.f;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_convdf (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convdf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src1, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union64 _src1;\n");
- ORC_ASM_CODE(p," orc_union32 _dest;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
- ORC_ASM_CODE(p," _dest.f = _src1.f;\n");
- ORC_ASM_CODE(p," %s = ORC_DENORMAL(_dest.i);\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src1;\n");
+ ORC_ASM_CODE (p, " orc_union32 _dest;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
+ ORC_ASM_CODE (p, " _dest.f = _src1.f;\n");
+ ORC_ASM_CODE (p, " %s = ORC_DENORMAL(_dest.i);\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convfl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40], src_i[40];
@@ -1273,16 +1275,18 @@ c_rule_convfl (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_float (src, p, insn, insn->src_args[0]);
c_get_name_int (src_i, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," int tmp;\n");
- ORC_ASM_CODE(p," tmp = (int)%s;\n", src);
- ORC_ASM_CODE(p," if (tmp == 0x80000000 && !(%s&0x80000000)) tmp = 0x7fffffff;\n", src_i);
- ORC_ASM_CODE(p," %s = tmp;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " int tmp;\n");
+ ORC_ASM_CODE (p, " tmp = (int)%s;\n", src);
+ ORC_ASM_CODE (p,
+ " if (tmp == 0x80000000 && !(%s&0x80000000)) tmp = 0x7fffffff;\n",
+ src_i);
+ ORC_ASM_CODE (p, " %s = tmp;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_convdl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40], src_i[40];
@@ -1290,16 +1294,18 @@ c_rule_convdl (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_float (src, p, insn, insn->src_args[0]);
c_get_name_int (src_i, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," int tmp;\n");
- ORC_ASM_CODE(p," tmp = %s;\n", src);
- ORC_ASM_CODE(p," if (tmp == 0x80000000 && !(%s & ORC_UINT64_C(0x8000000000000000))) tmp = 0x7fffffff;\n", src_i);
- ORC_ASM_CODE(p," %s = tmp;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " int tmp;\n");
+ ORC_ASM_CODE (p, " tmp = %s;\n", src);
+ ORC_ASM_CODE (p,
+ " if (tmp == 0x80000000 && !(%s & ORC_UINT64_C(0x8000000000000000))) tmp = 0x7fffffff;\n",
+ src_i);
+ ORC_ASM_CODE (p, " %s = tmp;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_minf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1307,19 +1313,20 @@ c_rule_minf (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p," {\n");
- ORC_ASM_CODE(p," orc_union32 _src1;\n");
- ORC_ASM_CODE(p," orc_union32 _src2;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1);
- ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL(%s);\n", src2);
- ORC_ASM_CODE(p," if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest);
- ORC_ASM_CODE(p," else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest);
- ORC_ASM_CODE(p," else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", dest);
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src1;\n");
+ ORC_ASM_CODE (p, " orc_union32 _src2;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1);
+ ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL(%s);\n", src2);
+ ORC_ASM_CODE (p, " if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest);
+ ORC_ASM_CODE (p, " else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest);
+ ORC_ASM_CODE (p, " else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_maxf (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1327,19 +1334,20 @@ c_rule_maxf (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p," {\n");
- ORC_ASM_CODE(p," orc_union32 _src1;\n");
- ORC_ASM_CODE(p," orc_union32 _src2;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL(%s);\n", src1);
- ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL(%s);\n", src2);
- ORC_ASM_CODE(p," if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest);
- ORC_ASM_CODE(p," else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest);
- ORC_ASM_CODE(p," else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", dest);
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _src1;\n");
+ ORC_ASM_CODE (p, " orc_union32 _src2;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL(%s);\n", src1);
+ ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL(%s);\n", src2);
+ ORC_ASM_CODE (p, " if (ORC_ISNAN(_src1.i)) %s = _src1.i;\n", dest);
+ ORC_ASM_CODE (p, " else if (ORC_ISNAN(_src2.i)) %s = _src2.i;\n", dest);
+ ORC_ASM_CODE (p, " else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_mind (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1347,19 +1355,22 @@ c_rule_mind (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p," {\n");
- ORC_ASM_CODE(p," orc_union64 _src1;\n");
- ORC_ASM_CODE(p," orc_union64 _src2;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
- ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2);
- ORC_ASM_CODE(p," if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", dest);
- ORC_ASM_CODE(p," else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", dest);
- ORC_ASM_CODE(p," else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n", dest);
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src1;\n");
+ ORC_ASM_CODE (p, " orc_union64 _src2;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
+ ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2);
+ ORC_ASM_CODE (p, " if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " else %s = (_src1.f < _src2.f) ? _src1.i : _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_maxd (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1367,43 +1378,48 @@ c_rule_maxd (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p," {\n");
- ORC_ASM_CODE(p," orc_union64 _src1;\n");
- ORC_ASM_CODE(p," orc_union64 _src2;\n");
- ORC_ASM_CODE(p," _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
- ORC_ASM_CODE(p," _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2);
- ORC_ASM_CODE(p," if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n", dest);
- ORC_ASM_CODE(p," else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n", dest);
- ORC_ASM_CODE(p," else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n", dest);
- ORC_ASM_CODE(p," }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _src1;\n");
+ ORC_ASM_CODE (p, " orc_union64 _src2;\n");
+ ORC_ASM_CODE (p, " _src1.i = ORC_DENORMAL_DOUBLE(%s);\n", src1);
+ ORC_ASM_CODE (p, " _src2.i = ORC_DENORMAL_DOUBLE(%s);\n", src2);
+ ORC_ASM_CODE (p, " if (ORC_ISNAN_DOUBLE(_src1.i)) %s = _src1.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " else if (ORC_ISNAN_DOUBLE(_src2.i)) %s = _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " else %s = (_src1.f > _src2.f) ? _src1.i : _src2.i;\n",
+ dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_swapwl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_swapwl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = ((%s&0x0000ffff) << 16) | ((%s&0xffff0000) >> 16);\n",
- dest, src, src);
+ ORC_ASM_CODE (p,
+ " %s = ((%s&0x0000ffff) << 16) | ((%s&0xffff0000) >> 16);\n", dest,
+ src, src);
}
static void
-c_rule_swaplq (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_swaplq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src[40];
c_get_name_int (dest, p, insn, insn->dest_args[0]);
c_get_name_int (src, p, insn, insn->src_args[0]);
- ORC_ASM_CODE(p," %s = (ORC_UINT64_C(%s&0x00000000ffffffff) << 32) | (ORC_UINT64_C(%s&0xffffffff00000000) >> 32);\n",
+ ORC_ASM_CODE (p,
+ " %s = (ORC_UINT64_C(%s&0x00000000ffffffff) << 32) | (ORC_UINT64_C(%s&0xffffffff00000000) >> 32);\n",
dest, src, src);
}
static void
-c_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_mergelq (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1411,16 +1427,16 @@ c_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union64 _dest;\n");
- ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1);
- ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2);
- ORC_ASM_CODE(p," %s = _dest.i;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union64 _dest;\n");
+ ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1);
+ ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2);
+ ORC_ASM_CODE (p, " %s = _dest.i;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_mergewl (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1428,16 +1444,16 @@ c_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union32 _dest;\n");
- ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1);
- ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2);
- ORC_ASM_CODE(p," %s = _dest.i;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union32 _dest;\n");
+ ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1);
+ ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2);
+ ORC_ASM_CODE (p, " %s = _dest.i;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
static void
-c_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn)
+c_rule_mergebw (OrcCompiler * p, void *user, OrcInstruction * insn)
{
char dest[40], src1[40], src2[40];
@@ -1445,12 +1461,12 @@ c_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn)
c_get_name_int (src1, p, insn, insn->src_args[0]);
c_get_name_int (src2, p, insn, insn->src_args[1]);
- ORC_ASM_CODE(p, " {\n");
- ORC_ASM_CODE(p," orc_union16 _dest;\n");
- ORC_ASM_CODE(p," _dest.x2[0] = %s;\n", src1);
- ORC_ASM_CODE(p," _dest.x2[1] = %s;\n", src2);
- ORC_ASM_CODE(p," %s = _dest.i;\n", dest);
- ORC_ASM_CODE(p, " }\n");
+ ORC_ASM_CODE (p, " {\n");
+ ORC_ASM_CODE (p, " orc_union16 _dest;\n");
+ ORC_ASM_CODE (p, " _dest.x2[0] = %s;\n", src1);
+ ORC_ASM_CODE (p, " _dest.x2[1] = %s;\n", src2);
+ ORC_ASM_CODE (p, " %s = _dest.i;\n", dest);
+ ORC_ASM_CODE (p, " }\n");
}
@@ -1461,7 +1477,7 @@ static OrcTarget c_target = {
orc_compiler_c_get_default_flags,
orc_compiler_c_init,
orc_compiler_c_assemble,
- { { 0 } },
+ {{0}},
0,
orc_target_c_get_asm_preamble,
};
@@ -1474,7 +1490,7 @@ orc_c_init (void)
orc_target_register (&c_target);
- rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), &c_target, 0);
+ rule_set = orc_rule_set_new (orc_opcode_set_get ("sys"), &c_target, 0);
#define BINARY_SB(a,b) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL);
#define BINARY_UB(a,b) orc_rule_register (rule_set, #a , c_rule_ ## a, NULL);
@@ -1520,10 +1536,10 @@ orc_c_init (void)
#include "opcodes.h"
- orc_rule_register (rule_set, "loadpb", c_rule_loadpX, (void *)1);
- orc_rule_register (rule_set, "loadpw", c_rule_loadpX, (void *)2);
- orc_rule_register (rule_set, "loadpl", c_rule_loadpX, (void *)4);
- orc_rule_register (rule_set, "loadpq", c_rule_loadpX, (void *)8);
+ orc_rule_register (rule_set, "loadpb", c_rule_loadpX, (void *) 1);
+ orc_rule_register (rule_set, "loadpw", c_rule_loadpX, (void *) 2);
+ orc_rule_register (rule_set, "loadpl", c_rule_loadpX, (void *) 4);
+ orc_rule_register (rule_set, "loadpq", c_rule_loadpX, (void *) 8);
orc_rule_register (rule_set, "loadb", c_rule_loadX, NULL);
orc_rule_register (rule_set, "loadw", c_rule_loadX, NULL);
orc_rule_register (rule_set, "loadl", c_rule_loadX, NULL);
@@ -1575,4 +1591,3 @@ orc_c_init (void)
orc_rule_register (rule_set, "mergewl", c_rule_mergewl, NULL);
orc_rule_register (rule_set, "mergelq", c_rule_mergelq, NULL);
}
-