From 960280decd66fed85d9d64d2442008420c0cf73f Mon Sep 17 00:00:00 2001 From: pcpa Date: 2014年10月18日 11:31:18 -0300 Subject: Implement the jit_rsb* interface. * check/alu_rsb.ok, check/alu_rsb.tst: New files implementing tests for jit_rsb*. * check/Makefile.am, check/lightning.c, include/lightning.h, lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-sz.c, lib/jit_arm-vfp.c, lib/jit_arm.c, lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, lib/jit_hppa-sz.c, lib/jit_hppa.c, lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips-sz.c, lib/jit_mips.c, lib/jit_names.c, lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c, lib/jit_s390x.c, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-sz.c, lib/jit_x86-x87.c, lib/jit_x86.c, lib/lightning.c: Implement jit_rsb*. This was a missing lightning 1.x interface, that on most backends is synthesized, but on a few backends (hppa and ia64), it can generate better code as on those there is, or the only instruction with an immediate is in "rsb" format (left operand). --- include/lightning.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'include/lightning.h') diff --git a/include/lightning.h b/include/lightning.h index 2e87905..926d0f1 100644 --- a/include/lightning.h +++ b/include/lightning.h @@ -228,7 +228,9 @@ typedef enum { #define jit_subxr(u,v,w) jit_new_node_www(jit_code_subxr,u,v,w) #define jit_subxi(u,v,w) jit_new_node_www(jit_code_subxi,u,v,w) jit_code_subxr, jit_code_subxi, - +#define jit_rsbr(u,v,w) jit_subr(u,w,v) +#define jit_rsbi(u,v,w) jit_new_node_www(jit_code_rsbi,u,v,w) + jit_code_rsbi, #define jit_mulr(u,v,w) jit_new_node_www(jit_code_mulr,u,v,w) #define jit_muli(u,v,w) jit_new_node_www(jit_code_muli,u,v,w) jit_code_mulr, jit_code_muli, @@ -533,6 +535,9 @@ typedef enum { #define jit_subr_f(u,v,w) jit_new_node_www(jit_code_subr_f,u,v,w) #define jit_subi_f(u,v,w) jit_new_node_wwf(jit_code_subi_f,u,v,w) jit_code_subr_f, jit_code_subi_f, +#define jit_rsbr_f(u,v,w) jit_subr_f(u,w,v) +#define jit_rsbi_f(u,v,w) jit_new_node_wwf(jit_code_rsbi_f,u,v,w) + jit_code_rsbi_f, #define jit_mulr_f(u,v,w) jit_new_node_www(jit_code_mulr_f,u,v,w) #define jit_muli_f(u,v,w) jit_new_node_wwf(jit_code_muli_f,u,v,w) jit_code_mulr_f, jit_code_muli_f, @@ -675,6 +680,9 @@ typedef enum { #define jit_subr_d(u,v,w) jit_new_node_www(jit_code_subr_d,u,v,w) #define jit_subi_d(u,v,w) jit_new_node_wwd(jit_code_subi_d,u,v,w) jit_code_subr_d, jit_code_subi_d, +#define jit_rsbr_d(u,v,w) jit_subr_d(u,w,v) +#define jit_rsbi_d(u,v,w) jit_new_node_wwd(jit_code_rsbi_d,u,v,w) + jit_code_rsbi_d, #define jit_mulr_d(u,v,w) jit_new_node_www(jit_code_mulr_d,u,v,w) #define jit_muli_d(u,v,w) jit_new_node_wwd(jit_code_muli_d,u,v,w) jit_code_mulr_d, jit_code_muli_d, -- cgit v1.2.3

AltStyle によって変換されたページ (->オリジナル) /