Correct float division and LX with stop code generation. - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/jit_ia64-cpu.c
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2013年04月27日 04:37:57 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2013年04月27日 04:37:57 -0300
commit2475ae88d4cfe1ff266d19647c295ab73314772a (patch)
tree7c2d66b98031c022ed6302f16c02de3857d9fc32 /lib/jit_ia64-cpu.c
parentcaeb6d6e11819030095b7cf855a6c1141a1f4a9e (diff)
downloadlightning-2475ae88d4cfe1ff266d19647c295ab73314772a.tar.gz
Correct float division and LX with stop code generation.
* lib/jit_ia64-cpu.c: Correct X2 pattern matching by preventing it to attempt to require a stop between the L and the X instruction; that is, check the registers and predicates before emitting the L instruction, not after. * lib/jit_ia64-fpu.c: Slightly simplify and correct divr_f and divrd_d implementation. * check/lightning.c: Add __ia64__ preprocessor define on Itanium. * check/alu.inc, check/clobber.tst, check/float.tst: Define several macros conditionally to __ia64__. This is required because __ia64__ jit generation can use way too many memory, due to not implementing instruction reordering to avoid as much as possible "stops", what causes way too many nops to be generated, as well as the fact that division and remainder requires function calls, and float division requires significant code to implement.
Diffstat (limited to 'lib/jit_ia64-cpu.c')
-rw-r--r--lib/jit_ia64-cpu.c 2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/jit_ia64-cpu.c b/lib/jit_ia64-cpu.c
index 0182d95..d817fbf 100644
--- a/lib/jit_ia64-cpu.c
+++ b/lib/jit_ia64-cpu.c
@@ -3297,9 +3297,9 @@ _X2(jit_state_t *_jit, jit_word_t _p,
i5 = (im >> 16) & 0x1fL;
i9 = (im >> 7) & 0x1ffL;
i7 = im & 0x7fL;
- inst(i41, INST_L);
TSTPRED(_p);
TSTREG1(r1);
+ inst(i41, INST_L);
inst((6L<<37)|(i1<<36)|(i9<<27)|(i5<<22)|
(ic<<21)|(i7<<13)|(r1<<6)|_p, INST_X);
SETREG(r1);
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月16日 21:42:00 +0000

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