| opcodes.h | | opcodes.h | |
| | | | |
| skipping to change at line 85 | | skipping to change at line 85 | |
| BINARY_SL(orl, "%s | %s") | | BINARY_SL(orl, "%s | %s") | |
| BINARY_SL(shll, "%s << %s") | | BINARY_SL(shll, "%s << %s") | |
| BINARY_SL(shrsl, "%s >> %s") | | BINARY_SL(shrsl, "%s >> %s") | |
| BINARY_UL(shrul, "((orc_uint32)%s) >> %s") | | BINARY_UL(shrul, "((orc_uint32)%s) >> %s") | |
| UNARY_SL(signl, "ORC_CLAMP(%s,-1,1)") | | UNARY_SL(signl, "ORC_CLAMP(%s,-1,1)") | |
| BINARY_SL(subl, "%s - %s") | | BINARY_SL(subl, "%s - %s") | |
| BINARY_SL(subssl, "ORC_CLAMP_SL((orc_int64)%s - (orc_int64)%s)") | | BINARY_SL(subssl, "ORC_CLAMP_SL((orc_int64)%s - (orc_int64)%s)") | |
| BINARY_UL(subusl, "ORC_CLAMP_UL((orc_int64)(orc_uint32)%s - (orc_int64)(orc
_uint32)%s)") | | BINARY_UL(subusl, "ORC_CLAMP_UL((orc_int64)(orc_uint32)%s - (orc_int64)(orc
_uint32)%s)") | |
| BINARY_SL(xorl, "%s ^ %s") | | BINARY_SL(xorl, "%s ^ %s") | |
| | | | |
|
| | | UNARY_SQ(copyq, "%s") | |
| | | | |
| UNARY_BW(convsbw, "%s") | | UNARY_BW(convsbw, "%s") | |
| UNARY_BW(convubw, "(orc_uint8)%s") | | UNARY_BW(convubw, "(orc_uint8)%s") | |
| UNARY_WB(convwb, "%s") | | UNARY_WB(convwb, "%s") | |
| UNARY_WB(convhwb, "((orc_uint16)%s)>>8") | | UNARY_WB(convhwb, "((orc_uint16)%s)>>8") | |
| UNARY_WB(convssswb, "ORC_CLAMP_SB(%s)") | | UNARY_WB(convssswb, "ORC_CLAMP_SB(%s)") | |
| UNARY_WB(convsuswb, "ORC_CLAMP_UB(%s)") | | UNARY_WB(convsuswb, "ORC_CLAMP_UB(%s)") | |
| UNARY_WB(convusswb, "ORC_CLAMP_SB((orc_uint16)%s)") | | UNARY_WB(convusswb, "ORC_CLAMP_SB((orc_uint16)%s)") | |
| UNARY_WB(convuuswb, "ORC_CLAMP_UB((orc_uint16)%s)") | | UNARY_WB(convuuswb, "ORC_CLAMP_UB((orc_uint16)%s)") | |
| | | | |
| UNARY_WL(convswl, "%s") | | UNARY_WL(convswl, "%s") | |
| | | | |
| skipping to change at line 124 | | skipping to change at line 126 | |
| BINARY_WL(muluwl, "(orc_uint16)%s * (orc_uint16)%s") | | BINARY_WL(muluwl, "(orc_uint16)%s * (orc_uint16)%s") | |
| | | | |
| BINARY_WL(mergewl, "((orc_uint16)%s) | ((orc_uint16)%s << 16)") | | BINARY_WL(mergewl, "((orc_uint16)%s) | ((orc_uint16)%s << 16)") | |
| BINARY_BW(mergebw, "((orc_uint8)%s) | ((orc_uint8)%s << 8)") | | BINARY_BW(mergebw, "((orc_uint8)%s) | ((orc_uint8)%s << 8)") | |
| UNARY_WB(select0wb, "(orc_uint16)%s & 0xff") | | UNARY_WB(select0wb, "(orc_uint16)%s & 0xff") | |
| UNARY_WB(select1wb, "((orc_uint16)%s >> 8)&0xff") | | UNARY_WB(select1wb, "((orc_uint16)%s >> 8)&0xff") | |
| UNARY_LW(select0lw, "(orc_uint32)%s & 0xffff") | | UNARY_LW(select0lw, "(orc_uint32)%s & 0xffff") | |
| UNARY_LW(select1lw, "((orc_uint32)%s >> 16)&0xffff") | | UNARY_LW(select1lw, "((orc_uint32)%s >> 16)&0xffff") | |
| UNARY_UW(swapw, "ORC_SWAP_W(%s)") | | UNARY_UW(swapw, "ORC_SWAP_W(%s)") | |
| UNARY_UL(swapl, "ORC_SWAP_L(%s)") | | UNARY_UL(swapl, "ORC_SWAP_L(%s)") | |
|
| | | UNARY_UQ(swapq, "ORC_SWAP_Q(%s)") | |
| | | | |
|
| BINARY_F(addf, "ORC_DENORMAL(ORC_DENORMAL(%s) + ORC_DENORMAL(%s))") | | BINARY_F(addf, "%s + %s") | |
| BINARY_F(subf, "ORC_DENORMAL(ORC_DENORMAL(%s) - ORC_DENORMAL(%s))") | | BINARY_F(subf, "%s - %s") | |
| BINARY_F(mulf, "ORC_DENORMAL(ORC_DENORMAL(%s) * ORC_DENORMAL(%s))") | | BINARY_F(mulf, "%s * %s") | |
| BINARY_F(divf, "ORC_DENORMAL(ORC_DENORMAL(%s) / ORC_DENORMAL(%s))") | | BINARY_F(divf, "%s / %s") | |
| UNARY_F(sqrtf, "sqrt(ORC_DENORMAL(%s))") | | UNARY_F(sqrtf, "sqrt(%s)") | |
| BINARY_F(maxf, "ORC_MAXF(ORC_DENORMAL(%s),ORC_DENORMAL(%s))") | | BINARY_FL(cmpeqf, "(%s == %s) ? (~0) : 0") | |
| BINARY_F(minf, "ORC_MINF(ORC_DENORMAL(%s),ORC_DENORMAL(%s))") | | BINARY_FL(cmpltf, "(%s < %s) ? (~0) : 0") | |
| BINARY_FL(cmpeqf, "(ORC_DENORMAL(%s) == ORC_DENORMAL(%s)) ? (~0) : 0") | | BINARY_FL(cmplef, "(%s <= %s) ? (~0) : 0") | |
| BINARY_FL(cmpltf, "(ORC_DENORMAL(%s) < ORC_DENORMAL(%s)) ? (~0) : 0") | | | |
| BINARY_FL(cmplef, "(ORC_DENORMAL(%s) <= ORC_DENORMAL(%s)) ? (~0) : 0") | | BINARY_D(addd, "%s + %s") | |
| UNARY_FL(convfl, "(int)%s") | | BINARY_D(subd, "%s - %s") | |
| UNARY_LF(convlf, "%s") | | BINARY_D(muld, "%s * %s") | |
| | | BINARY_D(divd, "%s / %s") | |
| | | UNARY_D(sqrtd, "sqrt(%s)") | |
| | | BINARY_DQ(cmpeqd, "(%s == %s) ? (~0ULL) : 0") | |
| | | BINARY_DQ(cmpltd, "(%s < %s) ? (~0ULL) : 0") | |
| | | BINARY_DQ(cmpled, "(%s <= %s) ? (~0ULL) : 0") | |
| | | | |
End of changes. 3 change blocks. |
| 0 lines changed or deleted | | 3 lines changed or added | |
|
| orcarm.h | | orcarm.h | |
| | | | |
| skipping to change at line 123 | | skipping to change at line 123 | |
| void orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond, | | void orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond, | |
| int Rd, int Rn, int Rm, int r8); | | int Rd, int Rn, int Rm, int r8); | |
| void orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, | | void orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond, | |
| int Rd, int Rn, int Rm, int sh); | | int Rd, int Rn, int Rm, int sh); | |
| void orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, | | void orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond, | |
| int Rd, int sat, int Rm, int sh, int asr); | | int Rd, int sat, int Rm, int sh, int asr); | |
| void orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond, | | void orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond, | |
| int Rd, int Rm); | | int Rd, int Rm); | |
| void orc_arm_emit_nop (OrcCompiler *compiler); | | void orc_arm_emit_nop (OrcCompiler *compiler); | |
| | | | |
|
| void orc_arm_flush_cache (OrcCompiler *compiler); | | void orc_arm_flush_cache (OrcCode *code); | |
| | | | |
| /* ALL cpus */ | | /* ALL cpus */ | |
| /* data procesing instructions */ | | /* data procesing instructions */ | |
| /* <op>{<cond>}{s} {<Rd>}, <Rn>, #imm */ | | /* <op>{<cond>}{s} {<Rd>}, <Rn>, #imm */ | |
| #define orc_arm_emit_and_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_AND,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_and_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_AND,S,Rd,Rn,0,0,imm) | |
| #define orc_arm_emit_eor_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_EOR,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_eor_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_EOR,S,Rd,Rn,0,0,imm) | |
| #define orc_arm_emit_sub_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_SUB,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_sub_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_SUB,S,Rd,Rn,0,0,imm) | |
| #define orc_arm_emit_rsb_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_RSB,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_rsb_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_RSB,S,Rd,Rn,0,0,imm) | |
| #define orc_arm_emit_add_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_ADD,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_add_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_ADD,S,Rd,Rn,0,0,imm) | |
| #define orc_arm_emit_adc_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_ADC,S,Rd,Rn,0,0,imm) | | #define orc_arm_emit_adc_i(p,cond,S,Rd,Rn,imm) orc_arm_emit_dp(p,0,c
ond,ORC_ARM_DP_ADC,S,Rd,Rn,0,0,imm) | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| orcemulateopcodes.h | | orcemulateopcodes.h | |
| | | | |
| skipping to change at line 112 | | skipping to change at line 112 | |
| void emulate_signl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_signl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_storel (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_storel (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_subl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_subl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_subssl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_subssl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_subusl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_subusl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_xorl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_xorl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_loadq (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_loadq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_loadpq (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_loadpq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_storeq (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_storeq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_splatw3q (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_splatw3q (OrcOpcodeExecutor *ex, int i, int n); | |
|
| | | void emulate_copyq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convsbw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convsbw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convubw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convubw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_splatbw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_splatbw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_splatbl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_splatbl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convswl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convswl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convuwl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convuwl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convslq (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convslq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convulq (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convulq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convwb (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convwb (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convhwb (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convhwb (OrcOpcodeExecutor *ex, int i, int n); | |
| | | | |
| skipping to change at line 146 | | skipping to change at line 147 | |
| void emulate_convuusql (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convuusql (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mulsbw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mulsbw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mulubw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mulubw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mulswl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mulswl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_muluwl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_muluwl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_accw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_accw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_accl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_accl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_accsadubl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_accsadubl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_swapw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_swapw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_swapl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_swapl (OrcOpcodeExecutor *ex, int i, int n); | |
|
| | | void emulate_swapq (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_select0wb (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_select0wb (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_select1wb (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_select1wb (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_select0lw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_select0lw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_select1lw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_select1lw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mergewl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mergewl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mergebw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mergebw (OrcOpcodeExecutor *ex, int i, int n); | |
|
| | | void emulate_splitql (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_splitlw (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_splitlw (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_splitwb (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_splitwb (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_addf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_addf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_subf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_subf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_mulf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_mulf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_divf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_divf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_sqrtf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_sqrtf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_maxf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_maxf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_minf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_minf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_cmpeqf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_cmpeqf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_cmpltf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_cmpltf (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_cmplef (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_cmplef (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convfl (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convfl (OrcOpcodeExecutor *ex, int i, int n); | |
| void emulate_convlf (OrcOpcodeExecutor *ex, int i, int n); | | void emulate_convlf (OrcOpcodeExecutor *ex, int i, int n); | |
|
| | | void emulate_addd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_subd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_muld (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_divd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_sqrtd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_maxd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_mind (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_cmpeqd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_cmpltd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_cmpled (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_convdl (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_convld (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_convfd (OrcOpcodeExecutor *ex, int i, int n); | |
| | | void emulate_convdf (OrcOpcodeExecutor *ex, int i, int n); | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 4 change blocks. |
| 0 lines changed or deleted | | 17 lines changed or added | |
|
| orcmmx.h | | orcmmx.h | |
| | | | |
| skipping to change at line 181 | | skipping to change at line 181 | |
| #define orc_mmx_emit_pmovsxbw(p,a,b) orc_mmx_emit_660f (p, "pmovsxbw", 0x
3820, a, b) | | #define orc_mmx_emit_pmovsxbw(p,a,b) orc_mmx_emit_660f (p, "pmovsxbw", 0x
3820, a, b) | |
| #define orc_mmx_emit_pmovsxbd(p,a,b) orc_mmx_emit_660f (p, "pmovsxbd", 0x
3821, a, b) | | #define orc_mmx_emit_pmovsxbd(p,a,b) orc_mmx_emit_660f (p, "pmovsxbd", 0x
3821, a, b) | |
| #define orc_mmx_emit_pmovsxbq(p,a,b) orc_mmx_emit_660f (p, "pmovsxbq", 0x
3822, a, b) | | #define orc_mmx_emit_pmovsxbq(p,a,b) orc_mmx_emit_660f (p, "pmovsxbq", 0x
3822, a, b) | |
| #define orc_mmx_emit_pmovsxwd(p,a,b) orc_mmx_emit_660f (p, "pmovsxwd", 0x
3823, a, b) | | #define orc_mmx_emit_pmovsxwd(p,a,b) orc_mmx_emit_660f (p, "pmovsxwd", 0x
3823, a, b) | |
| #define orc_mmx_emit_pmovsxwq(p,a,b) orc_mmx_emit_660f (p, "pmovsxwq", 0x
3824, a, b) | | #define orc_mmx_emit_pmovsxwq(p,a,b) orc_mmx_emit_660f (p, "pmovsxwq", 0x
3824, a, b) | |
| #define orc_mmx_emit_pmovsxdq(p,a,b) orc_mmx_emit_660f (p, "pmovsxdq", 0x
3825, a, b) | | #define orc_mmx_emit_pmovsxdq(p,a,b) orc_mmx_emit_660f (p, "pmovsxdq", 0x
3825, a, b) | |
| | | | |
| #define orc_mmx_emit_pmuldq(p,a,b) orc_mmx_emit_660f (p, "pmuldq", 0x38
28, a, b) | | #define orc_mmx_emit_pmuldq(p,a,b) orc_mmx_emit_660f (p, "pmuldq", 0x38
28, a, b) | |
| #define orc_mmx_emit_pcmpeqq(p,a,b) orc_mmx_emit_660f (p, "pcmpeqq", 0x3
829, a, b) | | #define orc_mmx_emit_pcmpeqq(p,a,b) orc_mmx_emit_660f (p, "pcmpeqq", 0x3
829, a, b) | |
| | | | |
|
| #define orc_mmx_emit_packusdw(p,a,b) orc_mmx_emit_660f (p, "packuswd", 0x
382b, a, b) | | #define orc_mmx_emit_packusdw(p,a,b) orc_mmx_emit_660f (p, "packusdw", 0x
382b, a, b) | |
| | | | |
| #define orc_mmx_emit_pmovzxbw(p,a,b) orc_mmx_emit_660f (p, "pmovzxbw", 0x
3830, a, b) | | #define orc_mmx_emit_pmovzxbw(p,a,b) orc_mmx_emit_660f (p, "pmovzxbw", 0x
3830, a, b) | |
| #define orc_mmx_emit_pmovzxbd(p,a,b) orc_mmx_emit_660f (p, "pmovzxbd", 0x
3831, a, b) | | #define orc_mmx_emit_pmovzxbd(p,a,b) orc_mmx_emit_660f (p, "pmovzxbd", 0x
3831, a, b) | |
| #define orc_mmx_emit_pmovzxbq(p,a,b) orc_mmx_emit_660f (p, "pmovzxbq", 0x
3832, a, b) | | #define orc_mmx_emit_pmovzxbq(p,a,b) orc_mmx_emit_660f (p, "pmovzxbq", 0x
3832, a, b) | |
| #define orc_mmx_emit_pmovzxwd(p,a,b) orc_mmx_emit_660f (p, "pmovzxwd", 0x
3833, a, b) | | #define orc_mmx_emit_pmovzxwd(p,a,b) orc_mmx_emit_660f (p, "pmovzxwd", 0x
3833, a, b) | |
| #define orc_mmx_emit_pmovzxwq(p,a,b) orc_mmx_emit_660f (p, "pmovzxwq", 0x
3834, a, b) | | #define orc_mmx_emit_pmovzxwq(p,a,b) orc_mmx_emit_660f (p, "pmovzxwq", 0x
3834, a, b) | |
| #define orc_mmx_emit_pmovzxdq(p,a,b) orc_mmx_emit_660f (p, "pmovzxdq", 0x
3835, a, b) | | #define orc_mmx_emit_pmovzxdq(p,a,b) orc_mmx_emit_660f (p, "pmovzxdq", 0x
3835, a, b) | |
| | | | |
| #define orc_mmx_emit_pmulld(p,a,b) orc_mmx_emit_660f (p, "pmuldq", 0x38
40, a, b) | | #define orc_mmx_emit_pmulld(p,a,b) orc_mmx_emit_660f (p, "pmuldq", 0x38
40, a, b) | |
| #define orc_mmx_emit_phminposuw(p,a,b) orc_mmx_emit_660f (p, "phminposuw",
0x3841, a, b) | | #define orc_mmx_emit_phminposuw(p,a,b) orc_mmx_emit_660f (p, "phminposuw",
0x3841, a, b) | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| orcpowerpc.h | | orcpowerpc.h | |
| | | | |
| skipping to change at line 93 | | skipping to change at line 93 | |
| void powerpc_emit_stw (OrcCompiler *compiler, int regs, int rega, int offse
t); | | void powerpc_emit_stw (OrcCompiler *compiler, int regs, int rega, int offse
t); | |
| void powerpc_emit_stwu (OrcCompiler *compiler, int regs, int rega, int offs
et); | | void powerpc_emit_stwu (OrcCompiler *compiler, int regs, int rega, int offs
et); | |
| | | | |
| void powerpc_emit_ret (OrcCompiler *compiler); | | void powerpc_emit_ret (OrcCompiler *compiler); | |
| void powerpc_emit_b (OrcCompiler *compiler, int label); | | void powerpc_emit_b (OrcCompiler *compiler, int label); | |
| void powerpc_emit_beq (OrcCompiler *compiler, int label); | | void powerpc_emit_beq (OrcCompiler *compiler, int label); | |
| void powerpc_emit_bne (OrcCompiler *compiler, int label); | | void powerpc_emit_bne (OrcCompiler *compiler, int label); | |
| void powerpc_emit_label (OrcCompiler *compiler, int label); | | void powerpc_emit_label (OrcCompiler *compiler, int label); | |
| void powerpc_add_fixup (OrcCompiler *compiler, int type, unsigned char *ptr
, int label); | | void powerpc_add_fixup (OrcCompiler *compiler, int type, unsigned char *ptr
, int label); | |
| void powerpc_do_fixups (OrcCompiler *compiler); | | void powerpc_do_fixups (OrcCompiler *compiler); | |
|
| void powerpc_flush (OrcCompiler *compiler); | | void orc_powerpc_flush_cache (OrcCode *code); | |
| | | | |
| void powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shi
ft, | | void powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shi
ft, | |
| int record); | | int record); | |
| void powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a, | | void powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a, | |
| int b, int minor); | | int b, int minor); | |
|
| | | void powerpc_emit_D (OrcCompiler *compiler, const char *name, | |
| | | unsigned int insn, int regd, int rega, int imm); | |
| void powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a
, | | void powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a
, | |
| int b); | | int b); | |
|
| void powerpc_emit_VA (OrcCompiler *compiler, int major, int d, int a, int b | | void powerpc_emit_VA (OrcCompiler *compiler, const char *name, unsigned int | |
| , | | insn, int d, int a, int b, | |
| int c, int minor); | | int c); | |
| void powerpc_emit_VA_2 (OrcCompiler *compiler, const char *name, int major, | | void powerpc_emit_VA_acb (OrcCompiler *compiler, const char *name, unsigned | |
| int d, | | int insn, int d, int a, int b, | |
| int a, int b, int c, int minor); | | int c); | |
| void powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int
a, | | void powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int
a, | |
| int b); | | int b); | |
|
| | | void powerpc_emit_VX_b (OrcCompiler *p, const char *name, unsigned int insn | |
| | | , int a); | |
| | | void powerpc_emit_VX_db (OrcCompiler *p, const char *name, unsigned int ins | |
| | | n, int d, int b); | |
| | | void powerpc_emit_VX_dbi (OrcCompiler *p, const char *name, unsigned int in | |
| | | sn, int d, int b, int imm); | |
| | | void powerpc_emit_VXR (OrcCompiler *compiler, const char *name, | |
| | | unsigned int insn, int d, int a, int b, int record); | |
| void powerpc_emit_VX_2 (OrcCompiler *p, const char *name, unsigned int insn
, | | void powerpc_emit_VX_2 (OrcCompiler *p, const char *name, unsigned int insn
, | |
| int d, int a, int b); | | int d, int a, int b); | |
| void powerpc_emit_VX_3 (OrcCompiler *p, const char *name, unsigned int insn
, | | void powerpc_emit_VX_3 (OrcCompiler *p, const char *name, unsigned int insn
, | |
| int d, int a, int b, int c); | | int d, int a, int b, int c); | |
| void powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, unsigned int
insn, | | void powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, unsigned int
insn, | |
| int d, int a, int b, int c); | | int d, int a, int b, int c); | |
| void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn
, | | void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn
, | |
| int d, int a); | | int d, int a); | |
| int powerpc_get_constant (OrcCompiler *p, int type, int value); | | int powerpc_get_constant (OrcCompiler *p, int type, int value); | |
| int powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int
value2, int value3); | | int powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int
value2, int value3); | |
| | | | |
| skipping to change at line 157 | | skipping to change at line 164 | |
| #define powerpc_emit_vmaxsb(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsb",
0x10000102, a, b, c) | | #define powerpc_emit_vmaxsb(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsb",
0x10000102, a, b, c) | |
| #define powerpc_emit_vmaxsh(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsh",
0x10000142, a, b, c) | | #define powerpc_emit_vmaxsh(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsh",
0x10000142, a, b, c) | |
| #define powerpc_emit_vmaxsw(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsw",
0x10000182, a, b, c) | | #define powerpc_emit_vmaxsw(p,a,b,c) powerpc_emit_VX_2 (p, "vmaxsw",
0x10000182, a, b, c) | |
| | | | |
| #define powerpc_emit_vminub(p,a,b,c) powerpc_emit_VX_2 (p, "vminub",
0x10000202, a, b, c) | | #define powerpc_emit_vminub(p,a,b,c) powerpc_emit_VX_2 (p, "vminub",
0x10000202, a, b, c) | |
| #define powerpc_emit_vminsb(p,a,b,c) powerpc_emit_VX_2 (p, "vminsb",
0x10000302, a, b, c) | | #define powerpc_emit_vminsb(p,a,b,c) powerpc_emit_VX_2 (p, "vminsb",
0x10000302, a, b, c) | |
| #define powerpc_emit_vminsh(p,a,b,c) powerpc_emit_VX_2 (p, "vminsh",
0x10000342, a, b, c) | | #define powerpc_emit_vminsh(p,a,b,c) powerpc_emit_VX_2 (p, "vminsh",
0x10000342, a, b, c) | |
| #define powerpc_emit_vminsw(p,a,b,c) powerpc_emit_VX_2 (p, "vminsw",
0x10000382, a, b, c) | | #define powerpc_emit_vminsw(p,a,b,c) powerpc_emit_VX_2 (p, "vminsw",
0x10000382, a, b, c) | |
| | | | |
| #define powerpc_emit_vsldoi(p,a,b,c,d) powerpc_emit_VX_3 (p, "vsldoi",
0x1000002c | (d<<6), a, b, c, d) | | #define powerpc_emit_vsldoi(p,a,b,c,d) powerpc_emit_VX_3 (p, "vsldoi",
0x1000002c | (d<<6), a, b, c, d) | |
|
| #define powerpc_emit_vmladduhm(p,a,b,c,d) powerpc_emit_VA_2 (p, "vmladduhm
", 4, a, b, c, d, 34) | | #define powerpc_emit_vmladduhm(p,a,b,c,d) powerpc_emit_VA (p, "vmladduhm",
0x10000022, a, b, c, d) | |
| | | | |
| #define powerpc_emit_vupkhsb(p,a,b) powerpc_emit_VX_4 (p, "vupkhsb",
0x1000020e, a, b) | | #define powerpc_emit_vupkhsb(p,a,b) powerpc_emit_VX_4 (p, "vupkhsb",
0x1000020e, a, b) | |
| #define powerpc_emit_vupkhsh(p,a,b) powerpc_emit_VX_4 (p, "vupkhsh",
0x1000024e, a, b) | | #define powerpc_emit_vupkhsh(p,a,b) powerpc_emit_VX_4 (p, "vupkhsh",
0x1000024e, a, b) | |
| | | | |
|
| #define powerpc_emit_vperm(p,a,b,c,d) powerpc_emit_VX_3_reg (p, "vperm
", 0x1000002b, a, b, c, d) | | #define powerpc_emit_vperm(p,a,b,c,d) powerpc_emit_VA (p, "vperm", 0x1
000002b, a, b, c, d) | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 6 change blocks. |
| 9 lines changed or deleted | | 19 lines changed or added | |
|
| orcprogram.h | | orcprogram.h | |
| | | | |
| skipping to change at line 22 | | skipping to change at line 22 | |
| typedef struct _OrcStaticOpcode OrcStaticOpcode; | | typedef struct _OrcStaticOpcode OrcStaticOpcode; | |
| typedef struct _OrcInstruction OrcInstruction; | | typedef struct _OrcInstruction OrcInstruction; | |
| typedef struct _OrcProgram OrcProgram; | | typedef struct _OrcProgram OrcProgram; | |
| typedef struct _OrcCompiler OrcCompiler; | | typedef struct _OrcCompiler OrcCompiler; | |
| typedef struct _OrcRule OrcRule; | | typedef struct _OrcRule OrcRule; | |
| typedef struct _OrcRuleSet OrcRuleSet; | | typedef struct _OrcRuleSet OrcRuleSet; | |
| typedef struct _OrcConstant OrcConstant; | | typedef struct _OrcConstant OrcConstant; | |
| typedef struct _OrcFixup OrcFixup; | | typedef struct _OrcFixup OrcFixup; | |
| typedef struct _OrcTarget OrcTarget; | | typedef struct _OrcTarget OrcTarget; | |
| typedef struct _OrcCode OrcCode; | | typedef struct _OrcCode OrcCode; | |
|
| | | typedef struct _OrcCodeChunk OrcCodeChunk; | |
| | | | |
| typedef void (*OrcOpcodeEmulateFunc)(OrcOpcodeExecutor *ex, void *user); | | typedef void (*OrcOpcodeEmulateFunc)(OrcOpcodeExecutor *ex, void *user); | |
| typedef void (*OrcOpcodeEmulateNFunc)(OrcOpcodeExecutor *ex, int index, int
n); | | typedef void (*OrcOpcodeEmulateNFunc)(OrcOpcodeExecutor *ex, int index, int
n); | |
| typedef void (*OrcOpcodeEmulate16Func)(OrcOpcodeExecutor *ex); | | typedef void (*OrcOpcodeEmulate16Func)(OrcOpcodeExecutor *ex); | |
| typedef void (*OrcRuleEmitFunc)(OrcCompiler *p, void *user, OrcInstruction
*insn); | | typedef void (*OrcRuleEmitFunc)(OrcCompiler *p, void *user, OrcInstruction
*insn); | |
| typedef void (*OrcExecutorFunc)(OrcExecutor *ex); | | typedef void (*OrcExecutorFunc)(OrcExecutor *ex); | |
| | | | |
| #define ORC_N_REGS (32*4) | | #define ORC_N_REGS (32*4) | |
| #define ORC_N_INSNS 100 | | #define ORC_N_INSNS 100 | |
| #define ORC_N_VARIABLES 64 | | #define ORC_N_VARIABLES 64 | |
| | | | |
| skipping to change at line 159 | | skipping to change at line 160 | |
| ORC_VAR_T5, | | ORC_VAR_T5, | |
| ORC_VAR_T6, | | ORC_VAR_T6, | |
| ORC_VAR_T7, | | ORC_VAR_T7, | |
| ORC_VAR_T8, | | ORC_VAR_T8, | |
| ORC_VAR_T9, | | ORC_VAR_T9, | |
| ORC_VAR_T10, | | ORC_VAR_T10, | |
| ORC_VAR_T11, | | ORC_VAR_T11, | |
| ORC_VAR_T12, | | ORC_VAR_T12, | |
| ORC_VAR_T13, | | ORC_VAR_T13, | |
| ORC_VAR_T14, | | ORC_VAR_T14, | |
|
| ORC_VAR_T15 | | ORC_VAR_T15, | |
| | | ORC_VAR_T16 | |
| }; | | }; | |
| | | | |
| enum { | | enum { | |
| ORC_CONST_ZERO, | | ORC_CONST_ZERO, | |
| ORC_CONST_SPLAT_B, | | ORC_CONST_SPLAT_B, | |
| ORC_CONST_SPLAT_W, | | ORC_CONST_SPLAT_W, | |
| ORC_CONST_SPLAT_L, | | ORC_CONST_SPLAT_L, | |
| ORC_CONST_FULL | | ORC_CONST_FULL | |
| }; | | }; | |
| | | | |
| enum { | | enum { | |
| ORC_SAMPLE_REGULAR = 0, | | ORC_SAMPLE_REGULAR = 0, | |
| ORC_SAMPLE_TRANSPOSED, | | ORC_SAMPLE_TRANSPOSED, | |
| ORC_SAMPLE_NEAREST, | | ORC_SAMPLE_NEAREST, | |
| ORC_SAMPLE_BILINEAR, | | ORC_SAMPLE_BILINEAR, | |
| ORC_SAMPLE_FOUR_TAP | | ORC_SAMPLE_FOUR_TAP | |
| }; | | }; | |
| | | | |
|
| | | enum { | |
| | | ORC_PARAM_TYPE_INT = 0, | |
| | | ORC_PARAM_TYPE_FLOAT, | |
| | | ORC_PARAM_TYPE_INT64, | |
| | | ORC_PARAM_TYPE_DOUBLE | |
| | | }; | |
| | | | |
| typedef enum { | | typedef enum { | |
| ORC_COMPILE_RESULT_OK = 0, | | ORC_COMPILE_RESULT_OK = 0, | |
| | | | |
| ORC_COMPILE_RESULT_UNKNOWN_COMPILE = 0x100, | | ORC_COMPILE_RESULT_UNKNOWN_COMPILE = 0x100, | |
| ORC_COMPILE_RESULT_MISSING_RULE = 0x101, | | ORC_COMPILE_RESULT_MISSING_RULE = 0x101, | |
| | | | |
| ORC_COMPILE_RESULT_UNKNOWN_PARSE = 0x200, | | ORC_COMPILE_RESULT_UNKNOWN_PARSE = 0x200, | |
| ORC_COMPILE_RESULT_PARSE = 0x201, | | ORC_COMPILE_RESULT_PARSE = 0x201, | |
| ORC_COMPILE_RESULT_VARIABLE = 0x202 | | ORC_COMPILE_RESULT_VARIABLE = 0x202 | |
| | | | |
| | | | |
| skipping to change at line 217 | | skipping to change at line 226 | |
| int first_use; | | int first_use; | |
| int last_use; | | int last_use; | |
| int replaced; | | int replaced; | |
| int replacement; | | int replacement; | |
| | | | |
| int alloc; | | int alloc; | |
| int is_chained; | | int is_chained; | |
| int is_aligned; | | int is_aligned; | |
| int is_uncached; | | int is_uncached; | |
| | | | |
|
| int value; | | orc_union64 value; | |
| | | | |
| int ptr_register; | | int ptr_register; | |
| int ptr_offset; | | int ptr_offset; | |
| int mask_alloc; | | int mask_alloc; | |
| int aligned_data; | | int aligned_data; | |
|
| int is_float_param; | | int param_type; | |
| int load_dest; | | int load_dest; | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * OrcRule: | | * OrcRule: | |
| * | | * | |
| * The OrcRule structure has no public members | | * The OrcRule structure has no public members | |
| */ | | */ | |
| struct _OrcRule { | | struct _OrcRule { | |
| /*< private >*/ | | /*< private >*/ | |
| | | | |
| skipping to change at line 347 | | skipping to change at line 356 | |
| /*< private >*/ | | /*< private >*/ | |
| struct { | | struct { | |
| OrcStaticOpcode *opcode; | | OrcStaticOpcode *opcode; | |
| int dest_args[ORC_STATIC_OPCODE_N_DEST]; | | int dest_args[ORC_STATIC_OPCODE_N_DEST]; | |
| int src_args[ORC_STATIC_OPCODE_N_SRC]; | | int src_args[ORC_STATIC_OPCODE_N_SRC]; | |
| | | | |
| OrcRule *rule; | | OrcRule *rule; | |
| } _unused[ORC_N_INSNS]; /* needed for ABI compatibility */ | | } _unused[ORC_N_INSNS]; /* needed for ABI compatibility */ | |
| int n_insns; | | int n_insns; | |
| | | | |
|
| OrcVariable vars[ORC_N_VARIABLES]; | | struct { | |
| | | char *name; | |
| | | char *type_name; | |
| | | | |
| | | int size; | |
| | | OrcVarType vartype; | |
| | | | |
| | | int used; | |
| | | int first_use; | |
| | | int last_use; | |
| | | int replaced; | |
| | | int replacement; | |
| | | | |
| | | int alloc; | |
| | | int is_chained; | |
| | | int is_aligned; | |
| | | int is_uncached; | |
| | | | |
| | | int value; | |
| | | | |
| | | int ptr_register; | |
| | | int ptr_offset; | |
| | | int mask_alloc; | |
| | | int aligned_data; | |
| | | int param_type; | |
| | | int load_dest; | |
| | | } _unused3[ORC_N_VARIABLES]; /* needed for ABI compatibility */ | |
| | | | |
| int n_src_vars; | | int n_src_vars; | |
| int n_dest_vars; | | int n_dest_vars; | |
| int n_param_vars; | | int n_param_vars; | |
| int n_const_vars; | | int n_const_vars; | |
| int n_temp_vars; | | int n_temp_vars; | |
| int n_accum_vars; | | int n_accum_vars; | |
| | | | |
| char *name; | | char *name; | |
| char *asm_code; | | char *asm_code; | |
| | | | |
|
| unsigned char *code; | | unsigned char *_unused2; | |
| | | /* The offset of code_exec in this structure is part of the ABI */ | |
| void *code_exec; | | void *code_exec; | |
|
| int code_size; | | | |
| | | | |
| OrcInstruction insns[ORC_N_INSNS]; | | OrcInstruction insns[ORC_N_INSNS]; | |
|
| | | OrcVariable vars[ORC_N_VARIABLES]; | |
| | | | |
| void *backup_func; | | void *backup_func; | |
| int is_2d; | | int is_2d; | |
| int constant_n; | | int constant_n; | |
| int constant_m; | | int constant_m; | |
| | | | |
| OrcCode *orccode; | | OrcCode *orccode; | |
| | | | |
| /* Hide this here. Belongs in a Parser object */ | | /* Hide this here. Belongs in a Parser object */ | |
| char *init_function; | | char *init_function; | |
| | | | |
| skipping to change at line 394 | | skipping to change at line 431 | |
| | | | |
| unsigned int target_flags; | | unsigned int target_flags; | |
| | | | |
| OrcInstruction insns[ORC_N_INSNS]; | | OrcInstruction insns[ORC_N_INSNS]; | |
| int n_insns; | | int n_insns; | |
| | | | |
| OrcVariable vars[ORC_N_COMPILER_VARIABLES]; | | OrcVariable vars[ORC_N_COMPILER_VARIABLES]; | |
| int n_temp_vars; | | int n_temp_vars; | |
| int n_dup_vars; | | int n_dup_vars; | |
| | | | |
|
| | | unsigned char *code; | |
| unsigned char *codeptr; | | unsigned char *codeptr; | |
| | | | |
| OrcConstant constants[ORC_N_CONSTANTS]; | | OrcConstant constants[ORC_N_CONSTANTS]; | |
| int n_constants; | | int n_constants; | |
| | | | |
| OrcFixup fixups[ORC_N_FIXUPS]; | | OrcFixup fixups[ORC_N_FIXUPS]; | |
| int n_fixups; | | int n_fixups; | |
| unsigned char *labels[ORC_N_LABELS]; | | unsigned char *labels[ORC_N_LABELS]; | |
| int n_labels; | | int n_labels; | |
| | | | |
| | | | |
| skipping to change at line 446 | | skipping to change at line 484 | |
| int min_temp_reg; | | int min_temp_reg; | |
| int max_used_temp_reg; | | int max_used_temp_reg; | |
| | | | |
| int insn_shift; /* used when emitting rules */ | | int insn_shift; /* used when emitting rules */ | |
| }; | | }; | |
| | | | |
| #define ORC_SRC_ARG(p,i,n) ((p)->vars[(i)->src_args[(n)]].alloc) | | #define ORC_SRC_ARG(p,i,n) ((p)->vars[(i)->src_args[(n)]].alloc) | |
| #define ORC_DEST_ARG(p,i,n) ((p)->vars[(i)->dest_args[(n)]].alloc) | | #define ORC_DEST_ARG(p,i,n) ((p)->vars[(i)->dest_args[(n)]].alloc) | |
| #define ORC_SRC_TYPE(p,i,n) ((p)->vars[(i)->src_args[(n)]].vartype) | | #define ORC_SRC_TYPE(p,i,n) ((p)->vars[(i)->src_args[(n)]].vartype) | |
| #define ORC_DEST_TYPE(p,i,n) ((p)->vars[(i)->dest_args[(n)]].vartype) | | #define ORC_DEST_TYPE(p,i,n) ((p)->vars[(i)->dest_args[(n)]].vartype) | |
|
| #define ORC_SRC_VAL(p,i,n) ((p)->vars[(i)->src_args[(n)]].value) | | #define ORC_SRC_VAL(p,insn,n) ((p)->vars[(insn)->src_args[(n)]].value.i) | |
| #define ORC_DEST_VAL(p,i,n) ((p)->vars[(i)->dest_args[(n)]].value) | | #define ORC_DEST_VAL(p,insn,n) ((p)->vars[(insn)->dest_args[(n)]].value.i) | |
| | | | |
| /** | | /** | |
| * OrcOpcodeExecutor: | | * OrcOpcodeExecutor: | |
| * | | * | |
| * The OrcOpcodeExecutor structure has no public members | | * The OrcOpcodeExecutor structure has no public members | |
| */ | | */ | |
| struct _OrcOpcodeExecutor { | | struct _OrcOpcodeExecutor { | |
| /*< private >*/ | | /*< private >*/ | |
| int src_values[ORC_STATIC_OPCODE_N_SRC]; | | int src_values[ORC_STATIC_OPCODE_N_SRC]; | |
| int dest_values[ORC_STATIC_OPCODE_N_DEST]; | | int dest_values[ORC_STATIC_OPCODE_N_DEST]; | |
| | | | |
| skipping to change at line 487 | | skipping to change at line 525 | |
| | | | |
| void *arrays[ORC_N_VARIABLES]; | | void *arrays[ORC_N_VARIABLES]; | |
| int params[ORC_N_VARIABLES]; | | int params[ORC_N_VARIABLES]; | |
| int accumulators[4]; | | int accumulators[4]; | |
| /* exec pointer is stored in arrays[ORC_VAR_A1] */ | | /* exec pointer is stored in arrays[ORC_VAR_A1] */ | |
| /* row pointers are stored in arrays[i+ORC_VAR_C1] */ | | /* row pointers are stored in arrays[i+ORC_VAR_C1] */ | |
| /* the stride for arrays[x] is stored in params[x] */ | | /* the stride for arrays[x] is stored in params[x] */ | |
| /* m is stored in params[ORC_VAR_A1] */ | | /* m is stored in params[ORC_VAR_A1] */ | |
| /* m_index is stored in params[ORC_VAR_A2] */ | | /* m_index is stored in params[ORC_VAR_A2] */ | |
| /* elapsed time is stored in params[ORC_VAR_A3] */ | | /* elapsed time is stored in params[ORC_VAR_A3] */ | |
|
| /* source resampling parameters are in params[ORC_VAR_C1..C8] */ | | /* high half of params is stored in params[ORC_VAR_T1..] */ | |
| }; | | }; | |
| | | | |
| /* the alternate view of OrcExecutor */ | | /* the alternate view of OrcExecutor */ | |
| struct _OrcExecutorAlt { | | struct _OrcExecutorAlt { | |
| /*< private >*/ | | /*< private >*/ | |
| OrcProgram *program; | | OrcProgram *program; | |
| int n; | | int n; | |
| int counter1; | | int counter1; | |
| int counter2; | | int counter2; | |
| int counter3; | | int counter3; | |
| | | | |
| void *arrays[ORC_N_ARRAYS]; | | void *arrays[ORC_N_ARRAYS]; | |
| OrcExecutorFunc exec; | | OrcExecutorFunc exec; | |
| void *unused1[ORC_N_VARIABLES - ORC_N_ARRAYS - 1]; | | void *unused1[ORC_N_VARIABLES - ORC_N_ARRAYS - 1]; | |
| int strides[ORC_N_ARRAYS]; | | int strides[ORC_N_ARRAYS]; | |
| int m; | | int m; | |
| int m_index; | | int m_index; | |
| int time; | | int time; | |
| int unused2; | | int unused2; | |
|
| int src_resample[8]; | | int unused4[8]; | |
| int params[ORC_VAR_T1-ORC_VAR_P1]; | | int params[ORC_VAR_T1-ORC_VAR_P1]; | |
|
| int unused3[ORC_N_VARIABLES - ORC_VAR_T1]; | | int params_hi[ORC_VAR_T1-ORC_VAR_P1]; | |
| | | int unused3[ORC_N_VARIABLES - ORC_VAR_T9]; | |
| int accumulators[4]; | | int accumulators[4]; | |
| }; | | }; | |
| #define ORC_EXECUTOR_EXEC(ex) ((OrcExecutorFunc)((ex)->arrays[ORC_VAR_A1])) | | #define ORC_EXECUTOR_EXEC(ex) ((OrcExecutorFunc)((ex)->arrays[ORC_VAR_A1])) | |
| #define ORC_EXECUTOR_M(ex) ((ex)->params[ORC_VAR_A1]) | | #define ORC_EXECUTOR_M(ex) ((ex)->params[ORC_VAR_A1]) | |
| #define ORC_EXECUTOR_M_INDEX(ex) ((ex)->params[ORC_VAR_A2]) | | #define ORC_EXECUTOR_M_INDEX(ex) ((ex)->params[ORC_VAR_A2]) | |
| #define ORC_EXECUTOR_TIME(ex) ((ex)->params[ORC_VAR_A3]) | | #define ORC_EXECUTOR_TIME(ex) ((ex)->params[ORC_VAR_A3]) | |
| | | | |
|
| | | typedef struct _OrcCodeVariable OrcCodeVariable; | |
| | | struct _OrcCodeVariable { | |
| | | /*< private >*/ | |
| | | int vartype; | |
| | | int size; | |
| | | orc_union64 value; | |
| | | }; | |
| | | | |
| struct _OrcCode { | | struct _OrcCode { | |
| /*< private >*/ | | /*< private >*/ | |
| OrcCompileResult result; | | OrcCompileResult result; | |
| char *name; | | char *name; | |
| | | | |
| /* for execution */ | | /* for execution */ | |
| OrcExecutorFunc exec; | | OrcExecutorFunc exec; | |
| unsigned char *code; | | unsigned char *code; | |
| int code_size; | | int code_size; | |
|
| | | void *chunk; | |
| | | | |
| /* for emulation */ | | /* for emulation */ | |
| int n_insns; | | int n_insns; | |
| OrcInstruction *insns; | | OrcInstruction *insns; | |
|
| OrcVariable *vars; | | OrcCodeVariable *vars; | |
| int is_2d; | | int is_2d; | |
| int constant_n; | | int constant_n; | |
| int constant_m; | | int constant_m; | |
| }; | | }; | |
| | | | |
| /** | | /** | |
| * OrcTarget: | | * OrcTarget: | |
| * | | * | |
| */ | | */ | |
| struct _OrcTarget { | | struct _OrcTarget { | |
| | | | |
| skipping to change at line 555 | | skipping to change at line 603 | |
| unsigned int (*get_default_flags)(void); | | unsigned int (*get_default_flags)(void); | |
| void (*compiler_init)(OrcCompiler *compiler); | | void (*compiler_init)(OrcCompiler *compiler); | |
| void (*compile)(OrcCompiler *compiler); | | void (*compile)(OrcCompiler *compiler); | |
| | | | |
| OrcRuleSet rule_sets[ORC_N_RULE_SETS]; | | OrcRuleSet rule_sets[ORC_N_RULE_SETS]; | |
| int n_rule_sets; | | int n_rule_sets; | |
| | | | |
| const char * (*get_asm_preamble)(void); | | const char * (*get_asm_preamble)(void); | |
| void (*load_constant)(OrcCompiler *compiler, int reg, int size, int value
); | | void (*load_constant)(OrcCompiler *compiler, int reg, int size, int value
); | |
| const char * (*get_flag_name)(int shift); | | const char * (*get_flag_name)(int shift); | |
|
| | | void (*flush_cache) (OrcCode *code); | |
| | | | |
|
| void *_unused[7]; | | void *_unused[6]; | |
| }; | | }; | |
| | | | |
| void orc_init (void); | | void orc_init (void); | |
| | | | |
| OrcProgram * orc_program_new (void); | | OrcProgram * orc_program_new (void); | |
| OrcProgram * orc_program_new_ds (int size1, int size2); | | OrcProgram * orc_program_new_ds (int size1, int size2); | |
| OrcProgram * orc_program_new_dss (int size1, int size2, int size3); | | OrcProgram * orc_program_new_dss (int size1, int size2, int size3); | |
| OrcProgram * orc_program_new_as (int size1, int size2); | | OrcProgram * orc_program_new_as (int size1, int size2); | |
| OrcProgram * orc_program_new_ass (int size1, int size2, int size3); | | OrcProgram * orc_program_new_ass (int size1, int size2, int size3); | |
| OrcStaticOpcode * orc_opcode_find_by_name (const char *name); | | OrcStaticOpcode * orc_opcode_find_by_name (const char *name); | |
| | | | |
| skipping to change at line 613 | | skipping to change at line 662 | |
| void orc_program_set_backup_function (OrcProgram *p, OrcExecutorFunc func); | | void orc_program_set_backup_function (OrcProgram *p, OrcExecutorFunc func); | |
| void orc_program_free (OrcProgram *program); | | void orc_program_free (OrcProgram *program); | |
| | | | |
| int orc_program_find_var_by_name (OrcProgram *program, const char *name); | | int orc_program_find_var_by_name (OrcProgram *program, const char *name); | |
| | | | |
| int orc_program_add_temporary (OrcProgram *program, int size, const char *n
ame); | | int orc_program_add_temporary (OrcProgram *program, int size, const char *n
ame); | |
| int orc_program_dup_temporary (OrcProgram *program, int i, int j); | | int orc_program_dup_temporary (OrcProgram *program, int i, int j); | |
| int orc_program_add_source (OrcProgram *program, int size, const char *name
); | | int orc_program_add_source (OrcProgram *program, int size, const char *name
); | |
| int orc_program_add_destination (OrcProgram *program, int size, const char
*name); | | int orc_program_add_destination (OrcProgram *program, int size, const char
*name); | |
| int orc_program_add_constant (OrcProgram *program, int size, int value, con
st char *name); | | int orc_program_add_constant (OrcProgram *program, int size, int value, con
st char *name); | |
|
| | | int orc_program_add_constant_int64 (OrcProgram *program, int size, orc_int6 | |
| | | 4 value, const char *name); | |
| | | int orc_program_add_constant_float (OrcProgram *program, int size, float va | |
| | | lue, const char *name); | |
| | | int orc_program_add_constant_double (OrcProgram *program, int size, double | |
| | | value, const char *name); | |
| | | int orc_program_add_constant_str (OrcProgram *program, int size, const char | |
| | | *value, const char *name); | |
| int orc_program_add_parameter (OrcProgram *program, int size, const char *n
ame); | | int orc_program_add_parameter (OrcProgram *program, int size, const char *n
ame); | |
| int orc_program_add_parameter_float (OrcProgram *program, int size, const c
har *name); | | int orc_program_add_parameter_float (OrcProgram *program, int size, const c
har *name); | |
|
| | | int orc_program_add_parameter_double (OrcProgram *program, int size, const | |
| | | char *name); | |
| | | int orc_program_add_parameter_int64 (OrcProgram *program, int size, const c | |
| | | har *name); | |
| int orc_program_add_accumulator (OrcProgram *program, int size, const char
*name); | | int orc_program_add_accumulator (OrcProgram *program, int size, const char
*name); | |
| void orc_program_set_type_name (OrcProgram *program, int var, const char *t
ype_name); | | void orc_program_set_type_name (OrcProgram *program, int var, const char *t
ype_name); | |
| void orc_program_set_sampling_type (OrcProgram *program, int var, int sampl
ing_type); | | void orc_program_set_sampling_type (OrcProgram *program, int var, int sampl
ing_type); | |
| | | | |
| OrcExecutor * orc_executor_new (OrcProgram *program); | | OrcExecutor * orc_executor_new (OrcProgram *program); | |
| void orc_executor_free (OrcExecutor *ex); | | void orc_executor_free (OrcExecutor *ex); | |
| void orc_executor_set_program (OrcExecutor *ex, OrcProgram *program); | | void orc_executor_set_program (OrcExecutor *ex, OrcProgram *program); | |
| void orc_executor_set_array (OrcExecutor *ex, int var, void *ptr); | | void orc_executor_set_array (OrcExecutor *ex, int var, void *ptr); | |
| void orc_executor_set_stride (OrcExecutor *ex, int var, int stride); | | void orc_executor_set_stride (OrcExecutor *ex, int var, int stride); | |
| void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *p
tr); | | void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *p
tr); | |
| void orc_executor_set_param (OrcExecutor *ex, int var, int value); | | void orc_executor_set_param (OrcExecutor *ex, int var, int value); | |
| void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int val
ue); | | void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int val
ue); | |
|
| | | void orc_executor_set_param_float (OrcExecutor *ex, int var, float value); | |
| | | void orc_executor_set_param_int64 (OrcExecutor *ex, int var, orc_int64 valu | |
| | | e); | |
| | | void orc_executor_set_param_double (OrcExecutor *ex, int var, double value) | |
| | | ; | |
| int orc_executor_get_accumulator (OrcExecutor *ex, int var); | | int orc_executor_get_accumulator (OrcExecutor *ex, int var); | |
| int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name); | | int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name); | |
| void orc_executor_set_n (OrcExecutor *ex, int n); | | void orc_executor_set_n (OrcExecutor *ex, int n); | |
| void orc_executor_set_m (OrcExecutor *ex, int m); | | void orc_executor_set_m (OrcExecutor *ex, int m); | |
| void orc_executor_emulate (OrcExecutor *ex); | | void orc_executor_emulate (OrcExecutor *ex); | |
| void orc_executor_run (OrcExecutor *ex); | | void orc_executor_run (OrcExecutor *ex); | |
| void orc_executor_run_backup (OrcExecutor *ex); | | void orc_executor_run_backup (OrcExecutor *ex); | |
| | | | |
| OrcOpcodeSet *orc_opcode_set_get (const char *name); | | OrcOpcodeSet *orc_opcode_set_get (const char *name); | |
| OrcOpcodeSet *orc_opcode_set_get_nth (int opcode_major); | | OrcOpcodeSet *orc_opcode_set_get_nth (int opcode_major); | |
| | | | |
| skipping to change at line 653 | | skipping to change at line 711 | |
| OrcRuleEmitFunc emit, void *emit_user); | | OrcRuleEmitFunc emit, void *emit_user); | |
| OrcRule * orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode, | | OrcRule * orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode, | |
| unsigned int target_flags); | | unsigned int target_flags); | |
| OrcTarget * orc_target_get_default (void); | | OrcTarget * orc_target_get_default (void); | |
| unsigned int orc_target_get_default_flags (OrcTarget *target); | | unsigned int orc_target_get_default_flags (OrcTarget *target); | |
| const char * orc_target_get_name (OrcTarget *target); | | const char * orc_target_get_name (OrcTarget *target); | |
| const char * orc_target_get_flag_name (OrcTarget *target, int shift); | | const char * orc_target_get_flag_name (OrcTarget *target, int shift); | |
| | | | |
| int orc_program_allocate_register (OrcProgram *program, int is_data); | | int orc_program_allocate_register (OrcProgram *program, int is_data); | |
| | | | |
|
| void orc_compiler_allocate_codemem (OrcCompiler *compiler); | | void orc_code_allocate_codemem (OrcCode *code, int size); | |
| int orc_compiler_label_new (OrcCompiler *compiler); | | int orc_compiler_label_new (OrcCompiler *compiler); | |
| int orc_compiler_get_constant (OrcCompiler *compiler, int size, int value); | | int orc_compiler_get_constant (OrcCompiler *compiler, int size, int value); | |
| int orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int va
lue); | | int orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int va
lue); | |
| int orc_compiler_get_temp_reg (OrcCompiler *compiler); | | int orc_compiler_get_temp_reg (OrcCompiler *compiler); | |
| int orc_compiler_get_constant_reg (OrcCompiler *compiler); | | int orc_compiler_get_constant_reg (OrcCompiler *compiler); | |
| | | | |
|
| | | void orc_program_reset (OrcProgram *program); | |
| | | OrcCode *orc_program_take_code (OrcProgram *program); | |
| | | | |
| const char *orc_program_get_asm_code (OrcProgram *program); | | const char *orc_program_get_asm_code (OrcProgram *program); | |
| const char *orc_target_get_asm_preamble (const char *target); | | const char *orc_target_get_asm_preamble (const char *target); | |
| const char * orc_target_get_preamble (OrcTarget *target); | | const char * orc_target_get_preamble (OrcTarget *target); | |
| const char * orc_target_c_get_typedefs (void); | | const char * orc_target_c_get_typedefs (void); | |
| | | | |
| void orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) | | void orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) | |
| ORC_GNU_PRINTF(2,3); | | ORC_GNU_PRINTF(2,3); | |
| | | | |
| void orc_target_register (OrcTarget *target); | | void orc_target_register (OrcTarget *target); | |
| OrcTarget *orc_target_get_by_name (const char *target_name); | | OrcTarget *orc_target_get_by_name (const char *target_name); | |
| | | | |
| skipping to change at line 690 | | skipping to change at line 751 | |
| | | | |
| int orc_compiler_flag_check (const char *flag); | | int orc_compiler_flag_check (const char *flag); | |
| | | | |
| extern int _orc_data_cache_size_level1; | | extern int _orc_data_cache_size_level1; | |
| extern int _orc_data_cache_size_level2; | | extern int _orc_data_cache_size_level2; | |
| extern int _orc_data_cache_size_level3; | | extern int _orc_data_cache_size_level3; | |
| | | | |
| extern int _orc_compiler_flag_backup; | | extern int _orc_compiler_flag_backup; | |
| extern int _orc_compiler_flag_debug; | | extern int _orc_compiler_flag_debug; | |
| | | | |
|
| | | void orc_code_chunk_free (OrcCodeChunk *chunk); | |
| | | | |
| #endif | | #endif | |
| | | | |
| #endif | | #endif | |
| | | | |
End of changes. 25 change blocks. |
| 14 lines changed or deleted | | 85 lines changed or added | |
|
| orcsse.h | | orcsse.h | |
| | | | |
| skipping to change at line 188 | | skipping to change at line 188 | |
| #define orc_sse_emit_pmovsxbw(p,a,b) orc_sse_emit_660f (p, "pmovsxbw", 0x
3820, a, b) | | #define orc_sse_emit_pmovsxbw(p,a,b) orc_sse_emit_660f (p, "pmovsxbw", 0x
3820, a, b) | |
| #define orc_sse_emit_pmovsxbd(p,a,b) orc_sse_emit_660f (p, "pmovsxbd", 0x
3821, a, b) | | #define orc_sse_emit_pmovsxbd(p,a,b) orc_sse_emit_660f (p, "pmovsxbd", 0x
3821, a, b) | |
| #define orc_sse_emit_pmovsxbq(p,a,b) orc_sse_emit_660f (p, "pmovsxbq", 0x
3822, a, b) | | #define orc_sse_emit_pmovsxbq(p,a,b) orc_sse_emit_660f (p, "pmovsxbq", 0x
3822, a, b) | |
| #define orc_sse_emit_pmovsxwd(p,a,b) orc_sse_emit_660f (p, "pmovsxwd", 0x
3823, a, b) | | #define orc_sse_emit_pmovsxwd(p,a,b) orc_sse_emit_660f (p, "pmovsxwd", 0x
3823, a, b) | |
| #define orc_sse_emit_pmovsxwq(p,a,b) orc_sse_emit_660f (p, "pmovsxwq", 0x
3824, a, b) | | #define orc_sse_emit_pmovsxwq(p,a,b) orc_sse_emit_660f (p, "pmovsxwq", 0x
3824, a, b) | |
| #define orc_sse_emit_pmovsxdq(p,a,b) orc_sse_emit_660f (p, "pmovsxdq", 0x
3825, a, b) | | #define orc_sse_emit_pmovsxdq(p,a,b) orc_sse_emit_660f (p, "pmovsxdq", 0x
3825, a, b) | |
| | | | |
| #define orc_sse_emit_pmuldq(p,a,b) orc_sse_emit_660f (p, "pmuldq", 0x38
28, a, b) | | #define orc_sse_emit_pmuldq(p,a,b) orc_sse_emit_660f (p, "pmuldq", 0x38
28, a, b) | |
| #define orc_sse_emit_pcmpeqq(p,a,b) orc_sse_emit_660f (p, "pcmpeqq", 0x3
829, a, b) | | #define orc_sse_emit_pcmpeqq(p,a,b) orc_sse_emit_660f (p, "pcmpeqq", 0x3
829, a, b) | |
| | | | |
|
| #define orc_sse_emit_packusdw(p,a,b) orc_sse_emit_660f (p, "packuswd", 0x
382b, a, b) | | #define orc_sse_emit_packusdw(p,a,b) orc_sse_emit_660f (p, "packusdw", 0x
382b, a, b) | |
| | | | |
| #define orc_sse_emit_pmovzxbw(p,a,b) orc_sse_emit_660f (p, "pmovzxbw", 0x
3830, a, b) | | #define orc_sse_emit_pmovzxbw(p,a,b) orc_sse_emit_660f (p, "pmovzxbw", 0x
3830, a, b) | |
| #define orc_sse_emit_pmovzxbd(p,a,b) orc_sse_emit_660f (p, "pmovzxbd", 0x
3831, a, b) | | #define orc_sse_emit_pmovzxbd(p,a,b) orc_sse_emit_660f (p, "pmovzxbd", 0x
3831, a, b) | |
| #define orc_sse_emit_pmovzxbq(p,a,b) orc_sse_emit_660f (p, "pmovzxbq", 0x
3832, a, b) | | #define orc_sse_emit_pmovzxbq(p,a,b) orc_sse_emit_660f (p, "pmovzxbq", 0x
3832, a, b) | |
| #define orc_sse_emit_pmovzxwd(p,a,b) orc_sse_emit_660f (p, "pmovzxwd", 0x
3833, a, b) | | #define orc_sse_emit_pmovzxwd(p,a,b) orc_sse_emit_660f (p, "pmovzxwd", 0x
3833, a, b) | |
| #define orc_sse_emit_pmovzxwq(p,a,b) orc_sse_emit_660f (p, "pmovzxwq", 0x
3834, a, b) | | #define orc_sse_emit_pmovzxwq(p,a,b) orc_sse_emit_660f (p, "pmovzxwq", 0x
3834, a, b) | |
| #define orc_sse_emit_pmovzxdq(p,a,b) orc_sse_emit_660f (p, "pmovzxdq", 0x
3835, a, b) | | #define orc_sse_emit_pmovzxdq(p,a,b) orc_sse_emit_660f (p, "pmovzxdq", 0x
3835, a, b) | |
| | | | |
| #define orc_sse_emit_pmulld(p,a,b) orc_sse_emit_660f (p, "pmulld", 0x38
40, a, b) | | #define orc_sse_emit_pmulld(p,a,b) orc_sse_emit_660f (p, "pmulld", 0x38
40, a, b) | |
| #define orc_sse_emit_phminposuw(p,a,b) orc_sse_emit_660f (p, "phminposuw",
0x3841, a, b) | | #define orc_sse_emit_phminposuw(p,a,b) orc_sse_emit_660f (p, "phminposuw",
0x3841, a, b) | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|