Commit | Line | Data |
---|---|---|
40a44dcb PC |
1 | 2022-05-14 Paulo Andrade <pcpa@gnu.org> |
2 | ||
3 | * include/lightning.h.in: Reorder jit_mov{n,z}r in instruction list. | |
4 | * lib/jit_alpha.c, lib/jit_alpha-cpu.c, lib/jit_hppa.c, | |
5 | lib/jit_hppa-cpu.c, lib/jit_ia64.c, lib/jit_ia64-cpu.c, | |
6 | lib/jit_riscv.c, lib/jit_riscv-cpu.c, lib/jit_s390.c, | |
7 | lib/jit_s390-cpu.c, lib/jit_sparc.c, lib/jit_sparc-cpu.c: | |
8 | Implement fallback jit_mov{n,z}r. These are a somewhat cheap | |
9 | implementation, but should be reviewed for the arches that already | |
10 | have a proper conditional move. | |
11 | * lib/jit_arm-sz.c, lib/jit_mips-sz.c: Add missing maximum size | |
12 | estimative and reorder. | |
13 | * lib/jit_aarch64-sz.c, lib/jit_x86-sz.c, lib/jit_ppc-sz.c: | |
14 | Reorder entry to match definition order. | |
15 | * lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_hppa-sz.c, | |
16 | lib/jit_ia64-sz.c, lib/jit_riscv-sz.c, lib/jit_s390-sz.c, | |
17 | lib/jit_sparc-sz.c: Add heuristic value, basically the sum of | |
18 | the cost of a movr + beqr. | |
19 | * lib/jit_names.c: Add entries for debug output of mov{n,z}r. | |
20 | * lib/lightning.c: Use proper bitmask in jit_classify. | |
21 | ||
519a9ea1 PC |
22 | 2021-04-03 Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> |
23 | ||
24 | * check/Makefile.am: Add test for the live instruction. | |
25 | * check/live.ok: New file. | |
26 | * check/live.tst: New file. | |
27 | * doc/body.texi: Add documentation for the live instruction and | |
28 | for jit_get_reg/jit_get_unreg. Fix menu entries. | |
29 | * include/lightning.h.in (jit_get_reg, jit_unget_reg): Expose the | |
30 | macros in the public header file. | |
31 | * include/lightning/jit_private.h (jit_get_reg, jit_unget_reg): | |
32 | Remove the macros from the private header file. | |
33 | ||
34 | 2021-04-03 Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> | |
35 | ||
36 | * Makefile.am, check/Makefile.am, doc/Makefile.am, | |
37 | lib/Makefile.am: Include $(top_builddir)/include in include paths | |
38 | for the autoconf-generated header file lightning.h. | |
39 | ||
40 | 2021-04-03 Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> | |
41 | ||
42 | * doc/.gitignore: Add version.texi to list of ignored files. | |
43 | * doc/version.texi: Remove file from version control. | |
44 | ||
45 | 2020-18-04 Paulo Andrade <pcpa@gnu.org> | |
46 | ||
47 | * lib/jit_x86-cpu.c, lib/jit_x86.c: Implement %rip relative | |
48 | calls and jumps on x86_64. Currently very conservative, assuming | |
49 | a jit block can be larger than 2G, so, if a jump or call is in | |
50 | the same jit generation, but target is unknown, use an indirect | |
51 | branch (could have an option to assume a jit code block is | |
52 | never larger than 2G). Also a deoptimization is that now does | |
53 | not always generate ip relative jmpi; previously implicitly | |
54 | assumed jmpi would never be larger than 2G. Overall still an | |
55 | optimization. | |
56 | ||
4a71579b PC |
57 | 2020-23-01 Paulo Andrade <pcpa@gnu.org> |
58 | ||
59 | * lib/lightning.c: Add a proper fix to the condition of considering | |
60 | a register dead at entry of a block when it modifies the register | |
61 | !after! a branch to a target where it is live. | |
62 | The correction is just to split blocks on branches. It uses an | |
63 | extra label per branch, but makes following the code simpler and | |
64 | avoid costly searches. | |
65 | ||
66 | 2020-22-01 Paulo Andrade <pcpa@gnu.org> | |
67 | ||
68 | * lib/lightning.c: Correct a special condition of a register | |
69 | only assigned in a block, and incorrectly marked as dead before | |
70 | a jump where the register is live. | |
71 | ||
72 | 2019-10-04 Paulo Andrade <pcpa@gnu.org> | |
73 | ||
74 | * check/lightning.c, include/lightning/jit_private.h, | |
75 | include/lightning/jit_x86.h, lib/jit_x86-cpu.c, lib/jit_x86-sz.c, | |
76 | lib/jit_x86.c: Correct issues with MinGW64 that defines _WIN32 | |
77 | and needs long long for jit_word_t. | |
78 | ||
79 | 2019-09-16 Paulo Andrade <pcpa@gnu.org> | |
80 | ||
81 | * lib/lightning.c: Do not add registers that are never modified | |
82 | to the set of registers to scan for live range, what might | |
83 | consume a lot of cpu time, doing nothing. | |
84 | ||
519a9ea1 | 85 | 2019-09-16 Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> |
4a71579b PC |
86 | |
87 | * include/lightning/jit_x86.h, lib/jit_x86.c: Correct x86_64 | |
88 | backend, made %r12 a callee-save register as dictated by the | |
89 | System V AMD64 ABI. | |
90 | ||
91 | 2019-09-16 Paulo Andrade <pcpa@gnu.org> | |
92 | ||
93 | * Makefile.am: Do not force CFLAGS for the get_jit_size target. | |
94 | * check/lightning.c: Drop __ppc__ check. | |
95 | * include/lightning.h.in: Drop __ppc__ check. Add new | |
96 | jit_flag_vararg flag, for special case in powerpc 32 bit using | |
97 | the SYSV abi, and need to pass an extra argument during code | |
98 | generation. | |
99 | * include/lightning/jit_ppc.c: Drop __ppc_ check. Remove the | |
100 | ABI_ELFv2 macro, as it now directly checks for the _CALL_ELF | |
101 | value when/if appropriate. | |
102 | * include/lightning/jit_private.h: Drop __ppc_ check. Check for | |
103 | _CALL_AIXDESC to define extra data to handle function | |
104 | descriptors. | |
105 | * lib/jit_ppc-cpu.c: Update to check for _CALL_SYSV; assume | |
106 | !_CALL_SYSV == (_CALL_AIX || _CALL_LINUX). Significant code | |
107 | rework for the SYSV abi. | |
108 | * lib/jit_ppc-sz.c: Update for the SYSV abi. | |
109 | * lib/jit_ppc.c: Update for the SYSV abi. Add matching va_list | |
110 | type. Drop __ppc__ check. | |
111 | * lib/jit_size.c: Drop __ppc_ check. | |
112 | * lib/lightning.c: Drop __ppc__ check. Add proper check for | |
113 | __powerpc__ and _CALL_AIXDESC to manage function descriptors. | |
114 | * lib/size.c: Update to drop __pppc_ check and SYSV abi. | |
115 | ||
116 | 2019-08-30 Paulo Andrade <pcpa@gnu.org> | |
117 | ||
118 | * lib/jit_mips-cpu.c: Use JALR to get the same effect as JR, as | |
119 | in mips32r6 JR generates an illegal instruction. Thanks to | |
120 | Bruno Haible for providing a patch and the information, reported at | |
121 | https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925129 | |
122 | * THANKS: update. | |
123 | ||
519a9ea1 | 124 | 2019-08-29 Marc Nieper-Wißkirchen <marc@nieper-wisskirchen.de> |
4a71579b PC |
125 | |
126 | * include/lightning/jit_private.h: Move definition of offsetof | |
127 | from the public header file here. | |
128 | ||
129 | * configure.ac, include/Makefile.am, include/lightning.h, | |
130 | include/lightning.h.in: Generate lightning.h from lightning.in.h | |
131 | and remove the dependence on config.h from the public header file. | |
132 | ||
133 | 2019-06-04 Paulo Andrade <pcpa@gnu.org> | |
134 | ||
135 | * include/lightning/jit_riscv.h, lib/jit_riscv-cpu.c, | |
136 | lib/jit_riscv-fpu.c, lib/jit_riscv-sz.c, lib/jit_riscv.c: | |
137 | Implement riscv port. Only 64 bit Linux supported. Built on | |
138 | Fedora 28 image. | |
139 | ||
140 | * check/all.tst, check/float.tst, configure.ac, include/lightning.h, | |
141 | include/lightning/Makefile.am, include/lightning/jit_private.h, | |
142 | lib/Makefile.am, lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c: | |
143 | Minor updates for the new riscv port. | |
144 | ||
145 | 2019-06-04 Paulo Andrade <pcpa@gnu.org> | |
146 | ||
147 | * lib/jit_alpha.c lib/jit_ia64.c lib/jit_mips.c lib/jit_sparc.c: | |
148 | Correct assertion of _jitc->regarg after emiting an instruction. | |
149 | jit_carry may be set, but not an argument to the current instruction. | |
150 | ||
151 | 2019-06-01 Paulo Andrade <pcpa@gnu.org> | |
152 | ||
153 | * lib/lightning.c: Correct assertion on jit_unget_reg when the | |
154 | argument is jit_carry, and jit_carry was not used in the | |
155 | instruction. | |
156 | ||
157 | 2019-06-01 Paulo Andrade <pcpa@gnu.org> | |
158 | ||
159 | * include/lightning/jit_private.h: Remove no longer need | |
160 | setmask field of jit_block_t and blockmask from jit_compiler_t. | |
161 | ||
162 | * lib/lightning.c: Rework of register live and unknown state | |
163 | information during jit generation. It no longer recurses nor | |
164 | do dangerous bit unset of registers in unknown state. The | |
165 | only pitfall known, that must be taken care now is that jmpr | |
166 | (or jmpi to not a jit node) is treated as a function call, as | |
167 | otherwise it would need to consider all registers live, and | |
168 | spill/reload during all jit generation. | |
169 | ||
170 | 2018-12-28 Paulo Andrade <pcpa@gnu.org> | |
171 | ||
172 | * lib/jit_disasm.c: Release bfd handle. Thanks for patch to | |
173 | Marc Nieper-Wißkirchen. | |
174 | ||
175 | 2018-08-30 Paulo Andrade <pcpa@gnu.org> | |
176 | ||
177 | * lib/jit_disasm.c: Add hints to select hppa disassembler. | |
178 | ||
179 | * lib/jit_hppa-cpu.c: Correct address of vastart when all | |
180 | argument registers were used as non vararg arguments. | |
181 | ||
182 | * lib/jit_hppa-fpu.c: Disable load/store of rv,ix,rb where | |
183 | rv is the value, ix is an register or integer offset and rb | |
184 | is a base register. These should be better tested, as they do | |
185 | not work on all environments (fail on qemu-hppa). | |
186 | ||
187 | 2018-04-20 Paulo Andrade <pcpa@gnu.org> | |
188 | ||
189 | * include/lightning/jit_private.h: Add new register classes to | |
190 | flag float registers and double only registers, required for sparc64 | |
191 | where only low 32 bit fpr registers can be used for single precision | |
192 | operations. | |
193 | Add new 128 bit jit_regset_t type for sparc64 register set. | |
194 | ||
195 | * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, | |
196 | lib/jit_sparc-sz.c, lib/jit_sparc.c: Update for 64 bits sparc. | |
197 | ||
198 | * lib/lightning.c: Update for new jit_regset_t required for sparc64. | |
199 | ||
200 | 2018-02-26 Paulo Andrade <pcpa@gnu.org> | |
201 | ||
202 | * check/lightning.c, include/lightning.h: Add the new jit_va_push | |
203 | interface. That should be called when passing a va_list to a C | |
204 | function. This is required because on Alpha a va_list is passed | |
205 | by value, and lightning does not know about data types, so, cannot | |
206 | understand it is pushing a va_list as argument. | |
207 | ||
208 | * lib/jit_names.c, lib/lightning.c: Minor changes for the new | |
209 | jit_code_va_push. | |
210 | ||
211 | * check/cva_list.c: Update only test case using jit_va_push, to | |
212 | pass a va_list to a C function. | |
213 | ||
214 | doc/body.texi: Better documentation of the varargs interface. | |
215 | ||
216 | * jit_alpha.c, jit_alpha-cpu.c: Update to properly push a | |
217 | C va_list and correctly calculate varargs offset. | |
218 | ||
219 | * lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-sz.c, | |
220 | lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_hppa-sz.c, lib/jit_hppa.c, | |
221 | lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-sz.c, lib/jit_mips.c, | |
222 | lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390-sz.c, lib/jit_s390.c, | |
223 | lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-sz.c, lib/jit_x86.c: | |
224 | Update for the new jit_va_push interface. | |
225 | ||
226 | 2018-02-22 Paulo Andrade <pcpa@gnu.org> | |
227 | ||
228 | * lib/jit_alpha-cpu.c: Always set t12 to the address of the | |
229 | current function, to properly work on all systems. Previously | |
230 | the shortcut did only work on Tru64. For Linux and glibc the | |
231 | change is required. | |
232 | ||
233 | 2018-02-22 Paulo Andrade <pcpa@gnu.org> | |
234 | ||
235 | * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c, | |
236 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c: | |
237 | Correct wrong logic in usage of jit_live in jit_retr. The | |
238 | problem is that if a temporary is required during epilog, | |
239 | the return register might be allocated, so, jit_live must always | |
240 | be used. | |
241 | ||
242 | 2018-01-31 Paulo Andrade <pcpa@gnu.org> | |
243 | ||
244 | * lib/lightning.c: Avoid deep recursions when computing live | |
245 | register ranges. | |
246 | ||
247 | 2018-01-31 Paulo Andrade <pcpa@gnu.org> | |
248 | ||
249 | * lib/jit_mips-cpu.c: Correct frame size and varargs | |
250 | initialization for the n32 abi. | |
251 | * lib/jit_mips.c, lib/jit_mips-fpu.c: Correct 32 bit abis | |
252 | in big-endian. | |
253 | ||
254 | 2017-09-13 Paulo Andrade <pcpa@gnu.org> | |
255 | ||
256 | * configure.ac: Add check for binutils 2.29 prototype to the | |
257 | disassembler function. | |
258 | * lib/jit_disasm.c: Adapt for binutils 2.29 change. | |
259 | ||
260 | 2017-06-09 Paulo Andrade <pcpa@gnu.org> | |
261 | ||
262 | * include/lightning/jit_private.h, lib/lightning.c: Add a | |
263 | second pass from start when computing register live ranges. | |
264 | This should be used temporarily, and is required for certain | |
265 | loop constructs, with several consecutive blocks not referencing | |
266 | a live register. | |
267 | ||
268 | 2016-05-05 Paulo Andrade <pcpa@gnu.org> | |
269 | ||
270 | * lib/lightning.c: Correct wrong movr simplification, | |
271 | remove no longer needed code to set return registers live | |
272 | and update live register set when reaching a label boundary, | |
273 | but do not descend if the block has been already visited. | |
274 | The later need some tuning for complex code generation, where | |
275 | it will still have issues. | |
276 | ||
277 | 2015-11-30 Paulo Andrade <pcpa@gnu.org> | |
278 | ||
279 | * doc/body.texi: Change documentation to no longer say | |
280 | it is a variant of the Fibonacci sequence, and document | |
281 | a proper implementation. | |
282 | Thanks to Jon Arintok for pointing out that the Fibonacci | |
283 | sequence generation was incorrect. It was documented, but | |
284 | still confusing. | |
285 | ||
286 | * check/fib.tst, check/fib.ok, check/bp.tst, check/bp.ok, | |
287 | doc/ifib.c, doc/rbif.c: Implement a proper Fibonacci | |
288 | sequence implementation. | |
289 | ||
290 | 2015-07-03 Paulo Andrade <pcpa@gnu.org> | |
291 | ||
292 | * lib/jit_mips-cpu.c: Correct definition of htonr_ul. | |
293 | Correct prolog/epilog/va* routines to work on o64 abi. | |
294 | ||
295 | * lib/jit_mips-fpu.c: Correct load of double literal | |
296 | argument when not using a data buffer. | |
297 | Remove alignment correction in vaarg_d if using the | |
298 | new mips abi. | |
299 | ||
300 | * lib/jit_mips.c: Correct code to allow creating variadic | |
301 | jit functions when using the new mips abi. | |
302 | ||
303 | * lib/jit_rewind.c: Minor adjust for rewind when using | |
304 | the new mips abi, if there are varargs arguments in | |
305 | registers. | |
306 | ||
307 | 2015-06-06 Paulo Andrade <pcpa@gnu.org> | |
308 | ||
309 | * lib/jit_ia64-cpu.c: Search backward for the last output | |
310 | register used, otherwise would stop too early if a float | |
311 | argument used the slot. | |
312 | Correct offset of first va_list argument, and use proper | |
313 | va_list abi. | |
314 | ||
315 | * lib/jit_ia64-fpu.c: Add new functions to move a gpr | |
316 | to a fpr register, to counterpart the ones that move a | |
317 | fpr to a gpr. These are required to properly implement | |
318 | jit_getarg*_{f,d} on complex prototypes, or variadic | |
319 | jit functions. | |
320 | ||
321 | * lib/jit_ia64-sz.c: Update for support to jit variadic | |
322 | functions. | |
323 | ||
324 | * lib/jit_ia64.c: Implement proper abi for variadic | |
325 | jit functions. | |
326 | ||
327 | 2015-06-04 Paulo Andrade <pcpa@gnu.org> | |
328 | ||
329 | * lib/jit_rewind.c: New file implementing generic functions | |
330 | to "rewind", or rewrite IR code sequences. | |
331 | ||
332 | * include/lightning.h: Add several new codes, that previously | |
333 | were a function call, that would synthesize the operation. | |
334 | Now, there is a code for the operation, and a new flag to | |
335 | know an operation is synthesized. | |
336 | ||
337 | * include/lightning/jit_private.h: Add several new macros to | |
338 | help construct synthesized IR code sequences. | |
339 | ||
340 | * lib/Makefile.am: Update for lib/jit_rewind.c. | |
341 | ||
342 | * lib/jit_disasm.c: Update for a small rework on jit_node_t, | |
343 | so that --enable-devel-disassembler does not need a change | |
344 | in the layout of jit_node_t. | |
345 | ||
346 | * lib/jit_names.c: Update for the new codes. | |
347 | ||
348 | * lib/jit_print.c: Update to print more readable output, and | |
349 | flag synthesized IR code sequences. | |
350 | ||
351 | * lib/jit_aarch64-sz.c, lib/jit_aarch64.c, | |
352 | lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_x86-sz.c, | |
353 | lib/jit_x86.c: Update for new synthesized IR code sequences. | |
354 | ||
355 | * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu., lib/jit_ppc-sz.c, | |
356 | lib/jit_ppc.c, lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, | |
357 | lib/jit_mips-sz.c, lib/jit_mips.c, lib/jit_s390-fpu.c, | |
358 | lib/jit_s390-sz.c, lib/jit_s390.c: Update for new synthesized | |
359 | IR code sequences and correct bugs in the initial varargs | |
360 | implementation support. | |
361 | ||
362 | * lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_hppa-sz.c, | |
363 | lib/jit_hppa.c, lib/jit_ia64-sz.c, lib/jit_ia64.c, | |
364 | lib/jit_sparc-sz.c, lib/jit_sparc.c: Add generic, untested | |
365 | support for the new synthesized IR code sequences. Known | |
366 | most likely broken right now, and should be corrected once | |
367 | access to these hosts is available. | |
368 | ||
369 | * lib/lightning.c: Update for new IR codes, and add support | |
370 | for not yet existing instructions that change third argument. | |
371 | ||
372 | * size.c: Change to use different tables for LE and BE PowerPC. | |
373 | Correct a wrong endif for x32. | |
374 | ||
375 | 2015-05-25 Paulo Andrade <pcpa@gnu.org> | |
376 | ||
377 | * check/cva_list.c: New file implementing a test to ensure | |
378 | the value returned by jit_va_start is a valid C va_list. | |
379 | ||
380 | * check/va_list.ok: New simple helper file, as now the | |
381 | va_list.tst test is enabled. | |
382 | ||
383 | * check/va_list.tst: Rewritten for an extensive variadic | |
384 | jit functions test. | |
385 | ||
386 | * check/Makefile.am: Update for the new tests. | |
387 | ||
388 | * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c, | |
389 | lib/jit_arm.c: Correct broken software float in a previous | |
390 | commit. Note that the hard float abi implementation is known | |
391 | broken at this time, for special cases involving variadic | |
392 | functions, and should be corrected next. | |
393 | ||
394 | lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c: Correct | |
395 | the jit_va_list_t semantics to match C va_list. | |
396 | ||
397 | 2015-05-24 Paulo Andrade <pcpa@gnu.org> | |
398 | ||
399 | * lib/Makefile.am: Bump library major. This is a preparation | |
400 | for a rework that was due for quite some time, but that is | |
401 | now required to properly implement variadic jit functions. | |
402 | The rework is mainly required to know at prolog parsing, if | |
403 | a function is variadic or not. This will benefit a few | |
404 | backends, and is mandatory for the hard float arm abi. | |
405 | The rework was already planned for quite some time, to | |
406 | be able to use a variable stack framesize, and for leaf | |
407 | functions optimization where applicable. | |
408 | The change will be source compatible, but will change | |
409 | some internals, and jit_code_t values, as some new will | |
410 | be added. | |
411 | The only behavior change is that, jit_arg_register_p may | |
412 | change return value on hard float arm abi, if called before | |
413 | or after jit_ellipsis. Common sense anyway, would say to | |
414 | make that call after jit_ellipsis, but documentation | |
415 | should be updated for it. | |
416 | ||
417 | 2015-05-24 Paulo Andrade <pcpa@gnu.org> | |
418 | ||
419 | * lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base | |
420 | aarch64 varargs code. | |
421 | ||
422 | 2015-05-24 Paulo Andrade <pcpa@gnu.org> | |
423 | ||
424 | * check/lightning.c: Clearly run check if clang is the system | |
425 | compiler. | |
426 | ||
427 | 2015-05-20 Paulo Andrade <pcpa@gnu.org> | |
428 | ||
429 | * lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, lib/jit_sparc.c: | |
430 | Add base support to jit vararg functions to the sparc backend. | |
431 | ||
432 | 2015-05-20 Paulo Andrade <pcpa@gnu.org> | |
433 | ||
434 | * lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha.c: | |
435 | Add base support to jit vararg functions to the alpha backend. | |
436 | ||
437 | 2015-05-19 Paulo Andrade <pcpa@gnu.org> | |
438 | ||
439 | * lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, lib/jit_hppa.c: | |
440 | Add base support to jit vararg functions to the hppa backend. | |
441 | ||
442 | 2015-05-10 Paulo Andrade <pcpa@gnu.org> | |
443 | ||
444 | * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c: | |
445 | Add base support to jit vararg functions to the ia64 backend. | |
446 | ||
447 | 2015-05-10 Paulo Andrade <pcpa@gnu.org> | |
448 | ||
449 | * lib/jit_ia64-fpu.c, lib/jit_ia64.c: Correct movi_d_w | |
450 | and movi_f_w implementation to work when not using a | |
451 | data buffer. This causes the check varargs.tst to | |
452 | work when passing "-d" to the lightning test tool. | |
453 | ||
454 | 2015-05-10 Paulo Andrade <pcpa@gnu.org> | |
455 | ||
456 | * lib/jit_ia64.c: Implement inline assembly cache flush, | |
457 | required on multiprocessor systems. | |
458 | ||
459 | 2015-05-06 Paulo Andrade <pcpa@gnu.org> | |
460 | ||
461 | * lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c: | |
462 | Add base support to jit vararg functions to the mips backend. | |
463 | Currently only supported on the o32 abi, until access to a | |
464 | n32 system is arranged. | |
465 | ||
466 | 2015-05-05 Paulo Andrade <pcpa@gnu.org> | |
467 | ||
468 | * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: | |
469 | Add base support to jit vararg functions to the PowerPC backend. | |
470 | ||
471 | 2015-05-02 Paulo Andrade <pcpa@gnu.org> | |
472 | ||
473 | * lib/jit_s390-cpu.c, lib/jit_s390-fpu.c, lib/jit_s390.c: | |
474 | Add base support to jit vararg functions to the s390 backend. | |
475 | ||
476 | 2015-05-01 Paulo Andrade <pcpa@gnu.org> | |
477 | ||
478 | * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c, | |
479 | lib/jit_arm.c: Add base support to jit vararg | |
480 | functions to the arm backend. | |
481 | ||
482 | 2015-04-30 Paulo Andrade <pcpa@gnu.org> | |
483 | ||
484 | * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, | |
485 | lib/jit_aarch64.c: Add base support to jit vararg | |
486 | functions to the aarch64 backend. | |
487 | ||
488 | 2015-04-27 Paulo Andrade <pcpa@gnu.org> | |
489 | ||
490 | * include/lightning.h, include/lightning/jit_private.h, | |
491 | lib/jit_names.c, lib/lightning.c: Add initial support | |
492 | for the new jit_va_start, jit_va_arg, jit_va_arg_d, and | |
493 | jit_va_end interfaces. The jit_va_start call is supposed | |
494 | to return a va_list compatible pointer, but not yet | |
495 | decided if it will be "declared" stdarg compatible, | |
496 | as for now only x86 support has been added (and should | |
497 | be compatible), but issues may arise on other backends. | |
498 | ||
499 | * check/lightning.c: Add wrappers to call the new jit_va_* | |
500 | interfaces. | |
501 | ||
502 | * lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new | |
503 | jit_va_* for x86. | |
504 | ||
505 | * lib/jit_x86-sz.c: Add fields, but not yet fully updated, | |
506 | as this is an intermediate commit. | |
507 | ||
508 | * lib/jit_aarch64-sz.c, lib/jit_aarch64.c, | |
509 | lib/jit_alpha-sz.c, lib/jit_alpha.c, | |
510 | lib/jit_arm-sz.c, lib/jit_arm.c, | |
511 | lib/jit_hppa-sz.c, lib/jit_hppa.c, | |
512 | lib/jit_ia64-sz.c, lib/jit_ia64.c, | |
513 | lib/jit_mips-sz.c, lib/jit_mips.c, | |
514 | lib/jit_ppc-sz.c, lib/jit_ppc.c, | |
515 | lib/jit_s390-sz.c, lib/jit_s390.c, | |
516 | lib/jit_sparc-sz.c, lib/jit_sparc.c: Prepare for the | |
517 | new jit_va_* interfaces. Not yet implemented, and will | |
518 | cause an assertion if used. | |
519 | ||
520 | * check/va_list.tst: Simple early test case, that works | |
521 | on x86_64, x32, ix86, cygwin, and cygwin64. | |
522 | ||
523 | 2015-02-17 Paulo Andrade <pcpa@gnu.org> | |
524 | ||
525 | * include/lightning.h, include/lightning/jit_private.h, | |
526 | lib/jit_aarch64-cpu.c, lib/jit_aarch64.c, | |
527 | lib/jit_alpha-cpu.c, lib/jit_alpha.c, | |
528 | lib/jit_arm-cpu.c, lib/jit_arm.c, | |
529 | lib/jit_hppa-cpu.c, lib/jit_hppa.c, | |
530 | lib/jit_ia64-cpu.c, lib/jit_ia64.c, | |
531 | lib/jit_mips-cpu.c, lib/jit_mips.c, | |
532 | lib/jit_ppc-cpu.c, lib/jit_ppc.c, | |
533 | lib/jit_s390-cpu.c, lib/jit_s390.c, | |
534 | lib/jit_sparc-cpu.c, lib/jit_sparc.c, | |
535 | lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new | |
536 | jit_allocar(offs, size) interface, that receives | |
537 | two integer registers arguments, allocates space | |
538 | dynamically in the stack, returns the offset in | |
539 | the first argument, and uses the second argument | |
540 | for the size in bytes of the memory to be allocated. | |
541 | ||
542 | * check/allocar.ok, check/allocar.tst: New files | |
543 | implementing test cases for the new jit_allocar | |
544 | interface. | |
545 | ||
546 | * check/Makefile.am, check/lightning.c: Update for | |
547 | the new test case and interface. | |
548 | ||
549 | * doc/body.texi: Add documentation of the new | |
550 | interface. | |
551 | ||
552 | 2015-02-17 Paulo Andrade <pcpa@gnu.org> | |
553 | ||
554 | * include/lightning/jit_x86.h, lib/jit_x86-cpu.c, | |
555 | lib/jit_x86-x87.c: No longer make st(7) available. | |
556 | Need to keep one x87 slots empty to avoid exceptions. | |
557 | This has the side effect of no longer needing the | |
558 | hackish emms instruction before a function call. | |
559 | ||
560 | 2015-02-16 Paulo Andrade <pcpa@gnu.org> | |
561 | ||
562 | * lib/lightning.c: Remove the jit_regno_patch bitfield | |
563 | register fields before actual emit, as it is only really | |
564 | used before emit, otherwise, on special conditions it | |
565 | may consider live registers as dead during code emit. | |
566 | ||
567 | 2015-02-15 Paulo Andrade <pcpa@gnu.org> | |
568 | ||
569 | * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c: | |
570 | Correct encoding of ldxr* stxr* in the x32 abi. If the | |
571 | displacement register is negative, it would generate | |
572 | a 64 bit instruction with a 32 bit unsigned displacement. | |
573 | ||
574 | * check/ranger.tst, check/ranger.ok: New files, implementing | |
575 | a test case for negative loads and stores. This is range.tst | |
576 | converted to use registers instead of immediate offsets. | |
577 | ||
578 | check/Makefile.am: Update for the new test case. | |
579 | ||
580 | 2015-02-07 Paulo Andrade <pcpa@gnu.org> | |
581 | ||
582 | * lib/jit_size.c: Preventively use at least 144 bytes | |
583 | if JIT_INSTR_MAX is less than it. The logic is not | |
584 | guaranteed to be 100% precise, it is mostly heuristics | |
585 | to allocate a buffer with as close as possible size, | |
586 | but a wrong value may cause code generation to write | |
587 | past the end of the buffer. | |
588 | ||
589 | 2015-02-03 Paulo Andrade <pcpa@gnu.org> | |
590 | ||
591 | * lib/lightning.c: Correct the reason the bug in | |
592 | simplify_stxi was not triggered before, it was due to | |
593 | incorrectly resetting the value->code field, what was | |
594 | causing it to never properly optimize: | |
595 | stxi Im0 Rb0 Rt0 | |
596 | ldxi Rt1 Rb1 Im1 | |
597 | when Rb0 == Rb1, Rt0 == Rt1 and Im0 == Im1 | |
598 | There was another possible issue, that has been also | |
599 | addressed in this commit, that would be the case of | |
600 | Rbn == Rtn, where no redundancy removal is possible. | |
601 | ||
602 | 2015-02-03 Paulo Andrade <pcpa@gnu.org> | |
603 | ||
604 | * lib/lightning.c: Correct wrong check in simplify_stxi. | |
605 | The test was incorrectly comparing the target register | |
606 | and the displacement offset. This was a time bomb bug, | |
607 | that would trigger in code like: | |
608 | stxi Im0 Rb0 Rt0 | |
609 | stxi Im1 Rb1 Rt1 | |
610 | if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is, | |
611 | the wrong check was Im0 == Rt1, instead of the supposed | |
612 | Im0 == Imm1 (that was what the code mean't to do). It | |
613 | was removing the second stxi assuming it was redundantly | |
614 | generated; as that is not uncommon pattern on | |
615 | translators generating jit. | |
616 | ||
617 | 2015-02-02 Paulo Andrade <pcpa@gnu.org> | |
618 | ||
619 | * configure.ac, include/lightning/jit_private.h, | |
620 | lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c, | |
621 | lib/jit_disasm.c, lib/jit_hppa.c, lib/jit_ia64.c, | |
622 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, | |
623 | lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c: Add a new | |
624 | --enable-devel-disassembler option, that should be used | |
625 | during development, or lightning debug. This option | |
626 | intermixes previous jit_print and jit_disassemble | |
627 | output, making it easier to visualize what lightning | |
628 | call was used, and what code was generated. | |
629 | ||
630 | 2015-01-31 Paulo Andrade <pcpa@gnu.org> | |
631 | ||
632 | * lib/jit_arm-cpu.c, lib/jit_arm.c: Only limit to 24 bit | |
633 | displacement non conditional jump in the same jit_state_t. | |
634 | ||
635 | 2015-01-19 Paulo Andrade <pcpa@gnu.org> | |
636 | ||
637 | * doc/body.texi: Reorder documentation, making jit_frame | |
638 | and jit_tramp the lightning response to the need of | |
639 | trampolines, continuations and tail call optimizations. | |
640 | A pseudo code example of a factorial function was added. | |
641 | Also added a section for description of the available | |
642 | predicates. | |
643 | ||
644 | * doc/fact.c: New file, implementing a simple example of | |
645 | a translation of a trivial, recursive, tail call optimization | |
646 | into lightning calls. This is the conversion to functional C | |
647 | code of the example in doc/body.texi. | |
648 | ||
649 | * doc/Makefile.am: Update for the next test case. | |
650 | ||
651 | 2015-01-17 Paulo Andrade <pcpa@gnu.org> | |
652 | ||
653 | * include/lightning.h, lib/jit_aarch64.c, | |
654 | lib/jit_alpha.c, lib/jit_arm-vfp.c, lib/jit_arm.c, | |
655 | lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, | |
656 | lib/jit_ppc.c, lib/jit_s390.c, lib/jit_sparc.c, | |
657 | lib/jit_x86.c: Add the new jit_arg_register_p predicate. | |
658 | The predicate is expected to be used to know if an | |
659 | argument is in a register, what would need special | |
660 | handling if code that can overwrite non callee save | |
661 | registers is executed. | |
662 | ||
663 | * check/carg.c: New test case to check consistency and | |
664 | expected usage of jit_arg_register_p. | |
665 | ||
666 | * check/Makefile.am: Update for new test case. | |
667 | ||
668 | 2015-01-17 Paulo Andrade <pcpa@gnu.org> | |
669 | ||
670 | * include/lightning/jit_aarch64.h, | |
671 | include/lightning/jit_alpha.h, | |
672 | include/lightning/jit_arm.h, | |
673 | include/lightning/jit_hppa.h, | |
674 | include/lightning/jit_mips.h, | |
675 | include/lightning/jit_ppc.h, | |
676 | include/lightning/jit_s390.h, | |
677 | include/lightning/jit_sparc.h, | |
678 | include/lightning/jit_x86.h, | |
679 | lib/jit_aarch64.c, lib/jit_alpha.c, | |
680 | lib/jit_arm.c, lib/jit_hppa.c, | |
681 | lib/jit_ia64.c, lib/jit_mips.c, | |
682 | lib/jit_ppc.c, lib/jit_s390.c, | |
683 | lib/jit_sparc.c, lib/jit_x86.c: Remove jit_arg_reg_p and | |
684 | jit_arg_f_reg_p from a public header, and define it only | |
685 | on port specific files where an integer offset is used | |
686 | to qualify an argument identifier. Exported code expects | |
687 | an opaque pointer (but of jit_node_t* type) to "qualify" | |
688 | an argument identifier. | |
689 | This patch, and the code review/simplification done during | |
690 | it also corrected some bugs: | |
691 | o Inconsistent jit_arg_d value of double argument after 3 | |
692 | integer arguments in arm for jit_functions; tested, C | |
693 | functions were being properly called. | |
694 | o Inconsistent use of getarg_{f,d} and putarg*_{f,d} on | |
695 | s390 (32-bit) that happened to not have a proper test | |
696 | case, as it would only happen for jit functions, and | |
697 | tested, called C functions had proper arguments. | |
698 | o Corrected a "last minute" correction that did not go | |
699 | to the committed version, and would not compile on hppa, | |
700 | due to bad _jit_putargi_d prototype definition. | |
701 | ||
702 | 2015-01-17 Paulo Andrade <pcpa@gnu.org> | |
703 | ||
704 | * doc/body.texi: Correct wrong/outdated information for | |
705 | hton*, pusharg* and ret*, and add missing documentation | |
706 | for rsb*, qmul*, qdvi* and putarg*. | |
707 | ||
708 | 2015-01-15 Paulo Andrade <pcpa@gnu.org> | |
709 | ||
710 | * configure.ac, lib/jit_disasm.c: Rewrite workaround | |
711 | to apparent problem to initialize powerpc disassembler. | |
712 | ||
713 | 2015-01-15 Paulo Andrade <pcpa@gnu.org> | |
714 | ||
715 | * include/lightning.h, lib/jit_aarch64.c, | |
716 | lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, | |
717 | lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c, | |
718 | lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c: | |
719 | Implement jit_putarg*. It works as a mix of jit_getarg* | |
720 | and jit_pusharg*, in the way that the first argument is | |
721 | a register or immediate, and the second is a pointer | |
722 | returned by jit_arg*. The use of the interface is to change | |
723 | values of arguments to the current jit function. | |
724 | ||
725 | * check/put.ok, check/put.tst: New test cases exercising | |
726 | the new jit_putarg* interface. | |
727 | ||
728 | * check/Makefile.am, check/lightning.c: Update for the | |
729 | new test case and interface. | |
730 | ||
731 | 2015-01-08 Paulo Andrade <pcpa@gnu.org> | |
732 | ||
733 | * include/lightning/jit_s390.h, lib/jit_s390-cpu.c, | |
734 | lib/jit_s390-fpu.c, lib/jit_s390-sz.c, lib/jit_s390.c: | |
735 | Renamed s390x* files to s390*. | |
736 | ||
737 | * check/float.tst, check/lightning.c, configure.ac, | |
738 | include/lightning.h, include/lightning/Makefile.am, | |
739 | lib/Makefile.am, lib/jit_s390.c, lib/jit_size.c, | |
740 | lib/lightning.c: Update for renamed files. | |
741 | ||
742 | 2015-01-08 Paulo Andrade <pcpa@gnu.org> | |
743 | ||
744 | * include/lightning.h, include/lightning/jit_private.h, | |
745 | include/lightning/jit_s390x.h, lib/jit_disasm.c, | |
746 | lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c, | |
747 | lib/jit_s390x.c, lib/jit_size.c, lib/lightning.c: | |
748 | Add support for generating jit for s390 32 bit. This change | |
749 | also removed %f15 from the list of temporaries fpr registers; | |
750 | it was not being used, but if were, it would corrupt the | |
751 | stack frame because the spill address would overwrite grp | |
752 | offsets. | |
753 | ||
754 | 2014-12-26 Paulo Andrade <pcpa@gnu.org> | |
755 | ||
756 | * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues | |
757 | on the powerpc le backend. | |
758 | ||
759 | 2014-12-26 Paulo Andrade <pcpa@gnu.org> | |
760 | ||
761 | * lib/jit_ppc-cpu.c: Add mcrxr instruction emulation, | |
762 | as this instruction has been phased out, and should be | |
763 | implemented as a kernel trap. | |
764 | ||
765 | 2014-12-26 Paulo Andrade <pcpa@gnu.org> | |
766 | ||
767 | * lib/jit_arm.c: Better check for need to flush constants | |
768 | before the pool being no longer reachable. | |
769 | ||
770 | 2014-12-25 Paulo Andrade <pcpa@gnu.org> | |
771 | ||
772 | * include/lightning.h: Split jit_htonr in the new 3 interfaces | |
773 | jit_htonr_us, jit_htonr_ui and jit_htonr_ul, the later only | |
774 | available on 64 bit. The plain/untyped jit_htonr macro call | |
775 | maps to the wordsize one. | |
776 | * lib/jit_aarch64-cpu.c, lib/jit_aarch64-sz.c, lib/jit_aarch64.c, | |
777 | lib/jit_alpha-cpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c, | |
778 | lib/jit_arm-cpu.c, lib/jit_arm-sz.c, lib/jit_arm.c, | |
779 | lib/jit_hppa-cpu.c, lib/jit_hppa-sz.c, lib/jit_hppa.c, | |
780 | lib/jit_ia64-cpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c, | |
781 | lib/jit_mips-cpu.c, lib/jit_mips-sz.c, lib/jit_mips.c, | |
782 | lib/jit_ppc-cpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c, | |
783 | lib/jit_s390x-cpu.c, lib/jit_s390x-sz.c, lib/jit_s390x.c, | |
784 | lib/jit_sparc-cpu.c, lib/jit_sparc-sz.c, lib/jit_sparc.c, | |
785 | lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c: | |
786 | Update backends for the new jit_htonr*. | |
787 | * check/lightning.c, lib/jit_names.c, lib/lightning.c: | |
788 | Update for the new jit_htonr* interfaces. | |
789 | * check/Makefile.am: Update for new test cases. | |
790 | * check/hton.ok, check/hton.tst: New test cases. | |
791 | ||
792 | 2014-12-24 Paulo Andrade <pcpa@gnu.org> | |
793 | ||
794 | * include/lightning/jit_private.h, include/lightning/jit_x86.h, | |
795 | lib/jit_disasm.c, lib/jit_x86-cpu.c, lib/jit_x86-sse.c, | |
796 | lib/jit_x86-sz.c, lib/jit_x86-x87.c, lib/jit_x86.c, | |
797 | size.c: Implement support for the x32 abi. Built and | |
798 | tested on Gentoo default/linux/amd64/13.0/x32 profile. | |
799 | ||
800 | 2014-12-24 Paulo Andrade <pcpa@gnu.org> | |
801 | ||
802 | * lib/jit_names.c: Add missing rsbi_f and rsbi_d strings. | |
803 | ||
804 | 2014-12-21 Paulo Andrade <pcpa@gnu.org> | |
805 | ||
806 | * lib/jit_arm.c: Call __clear_cache for every page. | |
807 | This should only be required for older boards or | |
808 | toolchain setup, but has been reported to be required | |
809 | for lightning at some point. | |
810 | ||
811 | 2014-12-21 Paulo Andrade <pcpa@gnu.org> | |
812 | ||
813 | * lib/jit_arm.c: Correct check to guard overflow of index | |
814 | of constants from program counter. | |
815 | ||
816 | 2014-11-24 Paulo Andrade <pcpa@gnu.org> | |
817 | ||
818 | * lib/lightning.c: Remove an optimization to calee save | |
819 | registers that may incorrectly remove a jit_movr under | |
820 | special conditions. | |
821 | ||
822 | 2014-11-20 Paulo Andrade <pcpa@gnu.org> | |
823 | ||
824 | * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, | |
825 | lib/jit_ppc.c: Add initial powerpc le support. | |
826 | ||
827 | 2014-11-20 Paulo Andrade <pcpa@gnu.org> | |
828 | ||
829 | * lib/jit_disasm.c: Change thumb or arm disassemble based on | |
830 | jit code before disassembly. | |
831 | ||
832 | * lib/jit_arm-cpu.c: Correct reversed arguments to LDRD and | |
833 | STRD instructions, and correct checking for support of those. | |
834 | ||
835 | * lib/jit_arm-swf.c: Correct wrong use of LDRD and STRD and | |
836 | only use those if the register is even. | |
837 | ||
838 | * check/check.arm.swf.sh, check/check.arm4.swf.sh: New files | |
839 | to test LDRD and STRD, as well as the alternate code path | |
840 | when those are not available, in the .arm4. test case. | |
841 | ||
842 | * check/Makefile.am: Update for the new test cases. | |
843 | ||
844 | 2014-11-08 Paulo Andrade <pcpa@gnu.org> | |
845 | ||
846 | * include/lightning/jit_private.h, lib/jit_aarch64.c, | |
847 | lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, | |
848 | lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c, | |
849 | lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c: | |
850 | Implement a private jit_flush call, that flushes | |
851 | the cache, if applicable, aligning down to the | |
852 | previous and up to the next page boundary. | |
853 | ||
854 | 2014-11-08 Paulo Andrade <pcpa@gnu.org> | |
855 | ||
856 | * check/ctramp.c: New file. It just repeats the test | |
857 | of tramp.tst, but using two jit_state_t, what should | |
858 | test possible issues with two contexts, and also validate | |
859 | jit_tramp works on backends with function descriptions. | |
860 | ||
861 | * check/Makefile.am: Update for new test case. | |
862 | ||
863 | 2014-11-03 Paulo Andrade <pcpa@gnu.org> | |
864 | ||
865 | * include/lightning/jit_mips.h: Do not make the t9 register | |
866 | JIT_R11 (or JIT_R7 for n32 or n64 abi) available. Previously | |
867 | it cause problems if one expects it to not be changed in a | |
868 | function call. For example, calling a jit function, where it | |
869 | really does not need to be changed. | |
870 | ||
871 | 2014-10-26 Paulo Andrade <pcpa@gnu.org> | |
872 | ||
873 | * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c, | |
874 | lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c, | |
875 | lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c: Add an | |
876 | assertion to all code generation "drivers" to ensure | |
877 | _jitc->regarg is empty or in an expected state, after | |
878 | translation of a lightning instruction to native code. | |
879 | This change was a brute force test to find out other cases | |
880 | of a temporary not being release (like was happening with | |
881 | _bmsi and _bmci on x86), but no other case was found, | |
882 | after running make check, with assertions enabled, on all | |
883 | backends. | |
884 | ||
885 | 2014-10-26 Paulo Andrade <pcpa@gnu.org> | |
886 | ||
887 | * lib/jit_x86-cpu.c: Correct a register allocation leak in | |
888 | _bmsi and _bmci. | |
889 | ||
890 | 2014-10-25 Paulo Andrade <pcpa@gnu.org> | |
891 | ||
892 | * lib/jit_disasm.c: Do not cause an fatal error if init_jit | |
893 | fails in the jit_init_debug call. | |
894 | ||
895 | 2014-10-24 Paulo Andrade <pcpa@gnu.org> | |
896 | ||
897 | * lib/jit_ia64.c, lib/jit_ppc.c: Correct handling of function | |
898 | descriptor when first prolog is a jit_tramp prolog. The | |
899 | test case was using the same jit_context_t, so was not | |
900 | triggering this condition. | |
901 | ||
902 | * lib/jit_ppc-cpu.c: Properly handle jump displacements that | |
903 | do not fit on 24 powerpc. This required changing from previous | |
904 | "mtlr reg, blr" to "mtctr reg, bctr" to properly handle | |
905 | the logic to "hide" function descriptors, but that would | |
906 | also be required as the proper jit_jmpr when/if implementing | |
907 | optimizations to leaf functions (was working with blr because | |
908 | it is saved/reloaded in prolog/epilog). | |
909 | ||
910 | 2014-10-21 Paulo Andrade <pcpa@gnu.org> | |
911 | ||
912 | * include/lightning.h, lib/lightning.c: Add three predicates | |
913 | to query information about labels. jit_forward_p(label) | |
914 | will return non zero if the label is "forward", that is | |
915 | need a call to jit_link(label), jit_indirect_p(label) | |
916 | that returns non zero if the label was created with the | |
917 | jit_indirect() call, and jit_target_p(label) that will | |
918 | return non zero if there is at least one jump patched | |
919 | to land at that label. | |
920 | ||
921 | 2014-10-18 Paulo Andrade <pcpa@gnu.org> | |
922 | ||
923 | * check/range.ok, check/range.tst: New test case designed | |
924 | to catch incorrect code generation, usually due to incorrect | |
925 | test of immediate size. The test checks a large amount of | |
926 | encodings in "power of two" boundaries. This test exorcises | |
927 | a significant amount of code paths that was previously not | |
928 | tested. | |
929 | ||
930 | * check/Makefile.am: Add range test to make check target. | |
931 | ||
932 | * lib/jit_aarch64-cpu.c: Correct wrong address calculation | |
933 | for stxi_c, stxi_s, stxi_i and stxi_l when the offset is | |
934 | too large. | |
935 | ||
936 | * lib/jit_mips-fpu.c: Correct wrong size test to check if | |
937 | an immediate can be encoded in a float or double store. | |
938 | ||
939 | * lib/jit_s390x-cpu.c: Correct inverted encoding to stxi_s | |
940 | when the offset cannot be encoded, and fallbacks to an | |
941 | alternate encoding in 2 instructions. | |
942 | ||
943 | 2014-10-17 Paulo Andrade <pcpa@gnu.org> | |
944 | ||
945 | * check/alu_rsb.ok, check/alu_rsb.tst: New files implementing | |
946 | tests for jit_rsb*. | |
947 | ||
948 | * check/Makefile.am, check/lightning.c, include/lightning.h, | |
949 | lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, lib/jit_aarch64-sz.c, | |
950 | lib/jit_aarch64.c, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, | |
951 | lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_arm-cpu.c, | |
952 | lib/jit_arm-swf.c, lib/jit_arm-sz.c, lib/jit_arm-vfp.c, | |
953 | lib/jit_arm.c, lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, | |
954 | lib/jit_hppa-sz.c, lib/jit_hppa.c, lib/jit_ia64-cpu.c, | |
955 | lib/jit_ia64-fpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c, | |
956 | lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips-sz.c, | |
957 | lib/jit_mips.c, lib/jit_names.c, lib/jit_ppc-cpu.c, | |
958 | lib/jit_ppc-fpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c, | |
959 | lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c, | |
960 | lib/jit_s390x.c, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, | |
961 | lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-cpu.c, | |
962 | lib/jit_x86-sse.c, lib/jit_x86-sz.c, lib/jit_x86-x87.c, | |
963 | lib/jit_x86.c, lib/lightning.c: Implement jit_rsb*. This | |
964 | was a missing lightning 1.x interface, that on most | |
965 | backends is synthesized, but on a few backends (hppa and ia64), | |
966 | it can generate better code as on those there is, or the | |
967 | only instruction with an immediate is in "rsb" format | |
968 | (left operand). | |
969 | ||
970 | 2014-10-17 Paulo Andrade <pcpa@gnu.org> | |
971 | ||
972 | * lib/jit_names.c: New file with single definition of string | |
973 | representation of lightning IR codes. | |
974 | ||
975 | * size.c: Modified to append the code name in a C comment | |
976 | after the maximum instruction size. | |
977 | ||
978 | * lib/jit_print.c: Minor change to not duplicate jit_names.c | |
979 | contents. | |
980 | ||
981 | * lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_arm-sz.c, | |
982 | lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c, | |
983 | lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c, | |
984 | lib/jit_x86-sz.c: Rewritten to add string representation of | |
985 | IR codes in a C comment. | |
986 | ||
987 | 2014-10-14 Paulo Andrade <pcpa@gnu.org> | |
988 | ||
989 | * lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c, | |
990 | lib/jit_hppa-cpu.c, lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c, | |
991 | lib/jit_sparc-cpu.c: Implement or correct the internal | |
992 | nop(count) call that receives an argument that tells the | |
993 | modulo bytes to align the code for the next instruction. | |
994 | ||
995 | * include/lightning.h, lib/lightning.c, lib/jit_aarch64.c, | |
996 | lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, lib/jit_ia64.c, | |
997 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c, | |
998 | lib/jit_x86.c: Implement the new jit_align() call that receive | |
999 | an argument, that tells the modulo, in bytes, to align the | |
1000 | next instruction. In most backends the only value that makes | |
1001 | a difference is a value that matches sizeof(void*), as all | |
1002 | other values usually are already automatically aligned in | |
1003 | labels, but not guaranteed to be aligned at word size bytes. | |
1004 | ||
1005 | * check/align.ok, check/align.tst: New files, implementing | |
1006 | a simple test for the new jit_align() interface. | |
1007 | ||
1008 | * check/Makefile.am, check/lightning.c, lib/jit_aarch64-sz.c, | |
1009 | lib/jit_alpha-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c, | |
1010 | lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c, | |
1011 | lib/jit_print.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c, | |
1012 | lib/jit_x86-sz.c: Update for the new jit_code_align code and | |
1013 | the jit_align() interface. | |
1014 | ||
1015 | 2014-10-13 Paulo Andrade <pcpa@gnu.org> | |
1016 | ||
1017 | * include/lightning.h, lib/jit_size.c, size.c: Use a | |
1018 | symbolic value for the last IR code. | |
1019 | ||
1020 | 2014-10-12 Paulo Andrade <pcpa@gnu.org> | |
1021 | ||
1022 | * include/lightning.h, include/lightning/jit_private.h, | |
1023 | lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c, | |
1024 | lib/jit_hppa-cpu.c, lib/jit_ia64-cpu.c, lib/jit_mips-cpu.c, | |
1025 | lib/jit_ppc-cpu.c, lib/jit_s390x-cpu.c, lib/jit_sparc-cpu.c, | |
1026 | lib/jit_x86-cpu.c, lib/lightning.c: Implement the new | |
1027 | jit_frame and jit_tramp interfaces, that allow writing | |
1028 | trampoline like calls, where a single dispatcher jit buffer | |
1029 | is written, and later other jit buffers are created, with | |
1030 | the same stack frame layout as the dispatcher. This is the | |
1031 | logic that GNU Smalltalk used in lightning 1.x, and is required | |
1032 | to make a sane port for lighting 2.x. | |
1033 | ||
1034 | * jit_ia64-cpu.c: Implement support for jit_frame and jit_tramp, | |
1035 | and also correct wrong encoding for B4 instructions, that | |
1036 | implement jmpr, as well as correct reverse logic in _jmpr, | |
1037 | that was moving the branch register to the jump register, | |
1038 | and not vice-versa. | |
1039 | Also, if a stack frame is to be assumed, always assume it may | |
1040 | call a function with up to 8 arguments, regardless of the | |
1041 | hint frame argument. | |
1042 | ||
1043 | * lib/jit_arm.c: Add a new must_align_p() interface to ensure | |
1044 | function prologs are always aligned. This condition was | |
1045 | previously always true, somewhat by accident, but with | |
1046 | jit_tramp it is not guaranteed. | |
1047 | ||
1048 | * jit_ia64-cpu.c: lib/jit_ppc.c: Add minor special handling | |
1049 | required to implement jit_tramp, where a function descriptor | |
1050 | should not be added before a prolog, as jit_tramp means omit | |
1051 | prolog. | |
1052 | ||
1053 | * check/lightning.c: Update test driver for the new interfaces. | |
1054 | ||
1055 | * check/Makefile.am, check/tramp.tst, check/tramp.ok: Add | |
1056 | a simple test and example of the jit_frame and jit_tramp | |
1057 | usage implementing a simple Fibonacci function using a | |
1058 | simulation of an interpreter stack and how it would handle | |
1059 | state in language specific variables. | |
1060 | ||
1061 | * doc/body.texi: Add documentation for jit_frame and | |
1062 | jit_tramp. | |
1063 | ||
1064 | 2014-09-29 Paulo Andrade <pcpa@gnu.org> | |
1065 | ||
1066 | * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c, | |
1067 | lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, | |
1068 | lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c, | |
1069 | lib/jit_x86.c, lib/lightning.c: Allow jit_jmpi on a | |
1070 | target that is not a node. This may lead to hard to | |
1071 | debug code generation, but is a required feature for | |
1072 | certain generators, like the ones that used lightning | |
1073 | 1.2x. Note that previously, but not really well | |
1074 | documented, it was instructed to use: | |
1075 | jit_movi(rn, addr); jit_jmpr(rn); | |
1076 | but now, plain: | |
1077 | jit_patch_abs(jit_jmpi(), addr); | |
1078 | should also work. | |
1079 | ||
1080 | 2014-09-24 Paulo Andrade <pcpa@gnu.org> | |
1081 | ||
1082 | * lib/jit_x86-sz.c: Generate information about instruction | |
1083 | lengths for more precise calculation of buffer size on | |
1084 | Windows x64. This change is specially important because | |
1085 | the maximum instruction length is larger than other | |
1086 | systems, what could cause an out of bounds write on | |
1087 | special conditions without this update. | |
1088 | ||
1089 | 2014-09-24 Paulo Andrade <pcpa@gnu.org> | |
1090 | ||
1091 | * check/lightning.c: Add workaround to conflicting global | |
1092 | optind variable in cygwin binutils that have an internal | |
1093 | getopt* implementation. | |
1094 | ||
1095 | * lib/jit_x86-cpu.c: Add a simple define ffsl ffs if building | |
1096 | for 32 bit and there is no ffsl function. | |
1097 | ||
1098 | 2014-09-24 Paulo Andrade <pcpa@gnu.org> | |
1099 | ||
1100 | * check/lightning.c: Add a hopefully temporary kludge to not use | |
1101 | sprintf and sscanf returned by dlsym. This is required to pass | |
1102 | the varargs test. | |
1103 | ||
1104 | * include/lightning/jit_private.h: Use symbolic name for first | |
1105 | integer register argument, as this is different in sysv and | |
1106 | win64 abi. | |
1107 | ||
1108 | * include/lightning/jit_x86.h: Add conditionals and definitions | |
1109 | for Windows x64 (under __CYGWIN__ preprocessor conditional). | |
1110 | ||
1111 | * lib/jit_x86-cpu.c: Correct one instruction encoding bug, that | |
1112 | was working by accident. Only use rax to rdx for some byte | |
1113 | operations to work on compatibility mode (that is, to generate | |
1114 | the proper encoding, instead of actually generating encoding | |
1115 | for high byte registers, e.g. %bh). | |
1116 | Add proper prolog and epilog for windows x64. | |
1117 | ||
1118 | * lib/jit_x86-sse.c: Correct a swapped rex prefix for float | |
1119 | operations. | |
1120 | ||
1121 | * lib/jit_x86.c: Adjust to support Windows x64 abi. | |
1122 | ||
1123 | * check/check.x87.nodata.sh: New file, previously used but that | |
1124 | was missing git. | |
1125 | ||
1126 | 2014-09-07 Paulo Andrade <pcpa@gnu.org> | |
1127 | ||
1128 | * lib/lightning.c: Mark all registers advertised as live, as | |
1129 | per jit_callee_save_p as live whenever reaching a jump that | |
1130 | cannot be tracked. This is a rethink of the previous commit, | |
1131 | and is a better approach, otherwise there would not be much | |
1132 | sense on relying on jit_callee_save_p if it could not be | |
1133 | trusted. | |
1134 | ||
1135 | * check/jmpr.tst, check/jmpr.ok: New files implementing a very | |
1136 | simple test case, that would actually cause an assertion on | |
1137 | code before the change to only mark as live when reaching a | |
1138 | jump that could not tracked, the actually advertised as callee | |
1139 | save registers. | |
1140 | ||
1141 | check/Makefile.am: Update for new jmpr test case. | |
1142 | ||
1143 | 2014-09-01 Paulo Andrade <pcpa@gnu.org> | |
1144 | ||
1145 | * lib/lightning.c: Do not mark all registers in unknown state | |
1146 | as live on jit_jmpr, or jit_jmpi to an absolute address. Instead, | |
1147 | treat it as a function call, and only consider JIT_Vn registers | |
1148 | as possibly live. | |
1149 | ||
1150 | 2014-08-29 Paulo Andrade <pcpa@gnu.org> | |
1151 | ||
1152 | * doc/body.texi: Add a proper info menu entry for | |
1153 | GNU lightning. | |
1154 | ||
1155 | * doc/version.texi: Regenerate. | |
1156 | ||
1157 | 2014-08-16 Paulo Andrade <pcpa@gnu.org> | |
1158 | ||
1159 | * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, | |
1160 | lib/jit_arm-cpu.c, lib/jit_arm-vfp.c, | |
1161 | lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, | |
1162 | lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, | |
1163 | lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, | |
1164 | lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, | |
1165 | lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, | |
1166 | lib/jit_s390x.c, lib/jit_sparc-cpu.c, | |
1167 | lib/jit_x86-cpu.c, lib/jit_x86-sse.c, | |
1168 | lib/jit_x86-x87.c: Review generation of all branch | |
1169 | instructions and always adds the jit_class_nospill | |
1170 | bitfield for temporary registers that cannot be spilled | |
1171 | because the reload would be after a conditional jump; the | |
1172 | patch only adds an extra assertion. These conditions do | |
1173 | not happen on documented lightning usage, but can happen | |
1174 | if one uses the not exported jit_get_reg and jit_unget_reg | |
1175 | calls and cause enough register starvation. | |
1176 | ||
1177 | 2014-08-16 Paulo Andrade <pcpa@gnu.org> | |
1178 | ||
1179 | * lib/jit_alpha.c: Correct wrong bitmask of most argument | |
1180 | float register arguments, that were being set as callee | |
1181 | save instead of argument registers class. | |
1182 | ||
1183 | 2014-08-16 Paulo Andrade <pcpa@gnu.org> | |
1184 | ||
1185 | * lib/jit_arm-sz.c: Regenerate table of known maximum | |
1186 | instruction sizes for the software float fallback, | |
1187 | that implements "virtual" float registers in the stack | |
1188 | and operations as calls to libgcc. | |
1189 | ||
1190 | * size.c: Correct typo in the generated jit_arm-sz.c file. | |
1191 | ||
1192 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1193 | ||
1194 | * include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c, | |
1195 | lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c: | |
1196 | New files implementing a lightning Alpha port. Thanks | |
1197 | to Trent Nelson and snakebit.net staff for providing access | |
1198 | to an Alpha system. | |
1199 | ||
1200 | * check/float.tst, check/lightning.c, configure.ac, | |
1201 | include/lightning.h, include/lightning/Makefile.am, | |
1202 | include/lightning/jit_private.h, lib/Makefile.am, | |
1203 | lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c: | |
1204 | Minor changes to adapt for the new Alpha port. | |
1205 | ||
1206 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1207 | ||
1208 | * lib/lightning.c: Always mark JIT_RET and JIT_FRET as | |
1209 | live in a function epilog. This is required because | |
1210 | on some ports a complex sequence, allocating one or more | |
1211 | registers, may be required to jump from a ret* to the | |
1212 | epilog, and the lightning api does not have annotations | |
1213 | to know if a function returns a value, or the type of | |
1214 | the return value. | |
1215 | ||
1216 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1217 | ||
1218 | * lib/lightning.c: Change the correct live bitmask of | |
1219 | return registers after a function call in jit_update. | |
1220 | ||
1221 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1222 | ||
1223 | * lib/lightning.c: Change assertions to have an int | |
1224 | result and correct a bad bit mask assertion. | |
1225 | ||
1226 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1227 | ||
1228 | * lib/jit_aarch64.c: Correct bad setup for assertion | |
1229 | of consistency before a patch. | |
1230 | ||
1231 | 2014-08-10 Paulo Andrade <pcpa@gnu.org> | |
1232 | ||
1233 | * lib/jit_mips-cpu.c: Correct typo in the jit_bmsr | |
1234 | implementation that was using the wrong test result | |
1235 | register. | |
1236 | ||
1237 | 2014-07-28 Paulo Andrade <pcpa@gnu.org> | |
1238 | ||
1239 | * lib/jit_memory.c: Do not call free on NULL pointers. | |
1240 | ||
1241 | * include/lightning/jit_private.h, lib/jit_note.c, | |
1242 | lib/lightning.c: Add a wrapper to memcpy and memmove | |
1243 | to not actually call those functions with a zero size | |
1244 | argument, and likely also a null src or dst. | |
1245 | ||
1246 | 2014-07-27 Paulo Andrade <pcpa@gnu.org> | |
1247 | ||
1248 | * include/lightning/jit_private.h, lib/jit_disasm.c, | |
1249 | lib/lightning.c: Remove the global jit_progname variable. | |
1250 | It was being only used in jit_init_debug, that is called | |
1251 | from init_jit, so, just pass an argument. | |
1252 | ||
1253 | 2014-07-27 Paulo Andrade <pcpa@gnu.org> | |
1254 | ||
1255 | * doc/body.texi: Add note that jit_set_memory_functions | |
1256 | should be called before init_jit, because init_jit | |
1257 | itself may call the memory wrappers. | |
1258 | ||
1259 | 2014-04-22 Paulo Andrade <pcpa@gnu.org> | |
1260 | ||
1261 | * lib/jit_arm.c: Do not get confused with default settings | |
1262 | if /proc is not mounted on Linux specific code path. | |
1263 | ||
1264 | 2014-04-09 Paulo Andrade <pcpa@gnu.org> | |
1265 | ||
1266 | * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h, | |
1267 | include/lightning/jit_hppa.h, include/lightning/jit_ia64.h, | |
1268 | include/lightning/jit_mips.h, include/lightning/jit_ppc.h, | |
1269 | include/lightning/jit_private.h, include/lightning/jit_s390x.h, | |
1270 | include/lightning/jit_sparc.h, include/lightning/jit_x86.h: | |
1271 | Do not add jit_regset_t, JIT_RA0, and JIT_FA0 to the installed | |
1272 | header file. These types and definitions are supposed to be | |
1273 | only used internally. | |
1274 | ||
1275 | 2014-04-05 Paulo Andrade <pcpa@gnu.org> | |
1276 | ||
1277 | * lib/jit_arm-cpu.c: Only adjust stack pointer in prolog if | |
1278 | need stack space, that is, do not emit a nop instruction | |
1279 | subtracting zero from the stack pointer. | |
1280 | ||
1281 | 2014-04-04 Paulo Andrade <pcpa@gnu.org> | |
1282 | ||
1283 | * lib/jit_disasm.c: Correct a crash in the doc/printf example | |
1284 | on arm due to releasing the data_info information in | |
1285 | jit_clear_state. This is a special case for arm only, and | |
1286 | actually, only armv5 or older uses the data_info buffer, | |
1287 | or when forcing arm instruction set mode besides thumb | |
1288 | available. | |
1289 | ||
1290 | 2014-12-03 Paulo Andrade <pcpa@gnu.org> | |
1291 | ||
1292 | * doc/body.texi: Write detailed description and examples for | |
1293 | jit_get_memory_functions, jit_set_memory_functions, | |
1294 | jit_get_code, jit_set_code, jit_get_data and jit_set_data. | |
1295 | ||
1296 | 2014-12-03 Paulo Andrade <pcpa@gnu.org> | |
1297 | ||
1298 | * include/lightning.h, include/lightning/jit_private.h, | |
1299 | lib/lightning.c: Implement the new jit_set_data() interface, | |
1300 | and the new jit_get_data() helper. Like jit_set_code(), | |
1301 | jit_realize() should be called before jit_set_data(). | |
1302 | The most common usage should be jit_set_data(JIT_DISABLE_DATA | |
1303 | | JIT_DISABLE_NOTE), to force synthesize any float/double | |
1304 | constant in the stack and not generate any debug information. | |
1305 | ||
1306 | * lib/jit_note.c: Minor change to debug note generation as | |
1307 | now it uses an alternate temporary data buffer during constants | |
1308 | and debug generation to accommodate the possibility of the user | |
1309 | setting an alternate data buffer. | |
1310 | ||
1311 | * lib/jit_hppa-fpu.c, lib/jit_s390x.c, lib/jit_s390x-cpu.c, | |
1312 | lib/jit_s390x-fpu.c, lib/jit_sparc.c, lib/jit_sparc-fpu.c, | |
1313 | lib/jit_x86-sse.c, lib/jit_x86-x87.c: Implement jit_set_data. | |
1314 | ||
1315 | * lib/jit_hppa-sz.c, lib/jit_sparc-sz.c, lib/jit_x86-sz.c, | |
1316 | lib/jit_s390x-sz.c: Update for several instructions that now | |
1317 | have a different maximum length due to jit_set_data. | |
1318 | ||
1319 | * lib/jit_mips-fpu.c: Implement jit_set_data, but missing | |
1320 | validation on n32 and n64 abis (and/or big endian). | |
1321 | ||
1322 | * lib/jit_mips-sz.c: Update for changes in o32. | |
1323 | ||
1324 | * lib/jit_ppc-fpu.c: Implement jit_set_data, but missing | |
1325 | validation on Darwin PPC. | |
1326 | ||
1327 | * lib/jit_ppc-sz.c: Update for changes in powerpc 32 and | |
1328 | 64 bit. | |
1329 | ||
1330 | * lib/jit_ia64-fpu.c: Implement untested jit_set_data. | |
1331 | ||
1332 | * TODO: Add note to list ports that were not tested for the | |
1333 | new jit_set_data() feature, due to no longer having access | |
1334 | to them. | |
1335 | ||
1336 | * check/nodata.c: New file implementing a simple test exercising | |
1337 | several different conditions created by jit_set_data(). | |
1338 | ||
1339 | * check/check.nodata.sh: New file implementing a wrapper | |
1340 | over the existing *.tst files, that runs all tests without | |
1341 | using a data buffer for constants; only meaningful (and | |
1342 | enabled) on architectures that used to store float/double | |
1343 | constants on a read only data buffer. | |
1344 | ||
1345 | * configure.ac, check/Makefile.am: Update for the new test | |
1346 | cases. | |
1347 | ||
1348 | * check/lightning.c: Implement the new "-d" option that | |
1349 | sets an internal flag to call jit_set_data() disable | |
1350 | constants and debug, that is, using only a pure code | |
1351 | buffer. | |
1352 | ||
1353 | 2014-11-03 Paulo Andrade <pcpa@gnu.org> | |
1354 | ||
1355 | * include/lightning.h, include/lightning/jit_private.h, | |
1356 | lib/lightning.c: Implement the new jit_set_code() interface, | |
1357 | that allows instructing lightning to use an alternate code | |
1358 | buffer. The new jit_realize() function should be called | |
1359 | before jit_set_code(), and usually call jit_get_code() | |
1360 | to query the amount of bytes expected to be required for | |
1361 | the code. | |
1362 | ||
1363 | * lib/jit_size.c: Minor update to have less chances of | |
1364 | miscalculating the code buffer by starting the counter | |
1365 | with the size of the longest instruction instead of zero, | |
1366 | as code emit fails if at any moment less than the longest | |
1367 | instruction bytes are available. | |
1368 | ||
1369 | * check/setcode.c: New file implementing some basic tests | |
1370 | of the new jit_set_code() interface. | |
1371 | ||
1372 | * check/Makefile.am: Update for newer test case. | |
1373 | ||
1374 | 2014-06-03 Paulo Andrade <pcpa@gnu.org> | |
1375 | ||
1376 | * include/lightning.h, lib/lightning.c: Add the new | |
1377 | jit_indirect() call, that returns a special label node, | |
1378 | and tells lightning that the label may be the target of | |
1379 | an indirect jump. | |
1380 | ||
1381 | * doc/body.texi: Document the new jit_indirect() call, and | |
1382 | add examples of different ways to create labels and branches. | |
1383 | ||
1384 | 2014-23-02 Paulo Andrade <pcpa@gnu.org> | |
1385 | ||
1386 | * lib/jit_x86.c: Rewrite previous patch to inline save/restore | |
1387 | because clobbering %ebx in x86 is treated as an error | |
1388 | (jit_x86.c:239:5: error: PIC register clobbered by 'ebx' in 'asm'). | |
1389 | ||
1390 | 2014-19-02 Paulo Andrade <pcpa@gnu.org> | |
1391 | ||
1392 | * lib/jit_x86.c: Rewrite incorrect inline assembly that could | |
1393 | truncate a variable in a callee save register. Now it simply | |
1394 | tells gcc that the register is clobbered, instead of using a | |
1395 | *32 bit* swap with a temporary variable. The problem only | |
1396 | happens when compiling with optimization. | |
1397 | ||
1398 | 2014-19-02 Paulo Andrade <pcpa@gnu.org> | |
1399 | ||
1400 | * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h, | |
1401 | include/lightning/jit_hppa.h, include/lightning/jit_ia64.h, | |
1402 | include/lightning/jit_mips.h, include/lightning/jit_ppc.h, | |
1403 | include/lightning/jit_s390x.h, include/lightning/jit_sparc.h, | |
1404 | include/lightning/jit_x86.h: Change jit_regset_t to an | |
1405 | unsigned type, to allow safe right shift. | |
1406 | ||
1407 | * lib/lightning.c: Rewrite jit_regset_scan1 to allow easier | |
1408 | compiler optimization. | |
1409 | ||
1410 | 2013-12-03 Paulo Andrade <pcpa@gnu.org> | |
1411 | ||
1412 | * lib/jit_x86-x87.c: Correct wrong optimization when | |
1413 | loading the log(2) constant. | |
1414 | ||
1415 | 2013-12-03 Paulo Andrade <pcpa@gnu.org> | |
1416 | ||
1417 | * lib/jit_x86-cpu.c: Use the emms instruction before | |
1418 | calling any function. This is particularly important | |
1419 | when using c99 complex functions as it can easily | |
1420 | overflow the x87 stack due to the way lightning uses | |
1421 | the x87 stack as a flat register file. | |
1422 | ||
1423 | 2013-12-02 Paulo Andrade <pcpa@gnu.org> | |
1424 | ||
1425 | * lib/jit_x86-x87.c: Correct wrong code generation due | |
1426 | to comparing the base and not the value register with | |
1427 | %st(0) in stxi_f. | |
1428 | ||
1429 | 2013-12-02 Paulo Andrade <pcpa@gnu.org> | |
1430 | ||
1431 | * lib/jit_x86-x87.c, lib/jit_x86.c: Use 8 bytes aligned | |
1432 | stack offset for float/double x87 to/from sse move. | |
1433 | ||
1434 | 2013-11-27 Paulo Andrade <pcpa@gnu.org> | |
1435 | ||
1436 | * configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add | |
1437 | changes that should at least allow building lightning | |
1438 | on Apple iOS7. | |
1439 | ||
1440 | 2013-10-08 Paulo Andrade <pcpa@gnu.org> | |
1441 | ||
1442 | * lib/jit_ppc-cpu.c: Correct wrong shortcut for ldxi_l with | |
1443 | a zero offset, that was calling ldr_i instead of ldr_l. | |
1444 | ||
1445 | 2013-10-08 Paulo Andrade <pcpa@gnu.org> | |
1446 | ||
1447 | * include/lightning/jit_arm.h, lib/jit_arm-cpu.c: Do not use | |
1448 | by default load/store instructions that map to ldrt/strt. | |
1449 | There is already the long displacement version for positive | |
1450 | offsets, and when using a (shorter) negative offset it does | |
1451 | not map to ldrt/strt. At least on qemu strt may cause | |
1452 | reproducible, but unexpected SIGILL. | |
1453 | ||
1454 | 2013-10-08 Paulo Andrade <pcpa@gnu.org> | |
1455 | ||
1456 | * lib/jit_arm-vfp.c: Correct wrong load/store offset | |
1457 | calculation when the displacement is constant but too | |
1458 | large to use an instruction with an immediate offset. | |
1459 | ||
1460 | 2013-10-07 Paulo Andrade <pcpa@gnu.org> | |
1461 | ||
1462 | * check/self.c: Extend tests to validate jit_callee_save_p | |
1463 | does not cause an assertion on valid arguments, and test | |
1464 | extra registers defined on some backends. | |
1465 | ||
1466 | * configure.ac: Do not ignore environment CFLAGS when | |
1467 | checking if need to test runtime configurable options, | |
1468 | like use x87 when sse2 is available, arm instruction set | |
1469 | instead of thumb, etc. | |
1470 | ||
1471 | * include/lightning/jit_arm.h: Correct wrong jit_f macro | |
1472 | definition. | |
1473 | ||
519a9ea1 | 1474 | * include/lightning/jit_ia64.h, include/lightning/jit_ppc.h: |
4a71579b PC |
1475 | Correct wrong jit_r macro definition. |
1476 | ||
1477 | * lib/jit_x86-x87.c, lib/jit_x86.c: Actually use the | |
1478 | reserved stack space for integer to/from float conversion. | |
1479 | The stack space was also changed to ensure it is 8 bytes | |
1480 | aligned. Also, for Solaris x86 in 32 bit mode, an alternate | |
1481 | truncr_d was implemented because for some reason it is | |
1482 | failing with SIGILL if using the "fisttpl" instructions, | |
1483 | that must be available on p6 or newer, but for the sake of | |
1484 | making all tests pass, implement a 486 or newer sequence | |
1485 | if "sun" is defined. | |
1486 | ||
1487 | 2013-10-03 Paulo Andrade <pcpa@gnu.org> | |
1488 | ||
1489 | * include/lightning/jit_mips.h, lib/jit_mips-cpu.c, | |
1490 | lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and | |
1491 | pass all test cases on Irix big endian mips using | |
1492 | the 64 bit abi. | |
1493 | ||
1494 | 2013-10-02 Paulo Andrade <pcpa@gnu.org> | |
1495 | ||
1496 | * include/lightning/jit_mips.h: Add proper mips abi detection. | |
1497 | ||
1498 | 2013-09-30 Paulo Andrade <pcpa@gnu.org> | |
1499 | ||
1500 | * lib/jit_print.c: Do not crash if calling jit_print from | |
1501 | gdb before actually emitting code. | |
1502 | ||
1503 | * lib/lightning.c: Correct misplaced check for already | |
1504 | visited blocks on conditional branches, what was preventing | |
1505 | proper merge live bit masks of forward blocks. | |
1506 | ||
1507 | 2013-09-30 Paulo Andrade <pcpa@gnu.org> | |
1508 | ||
1509 | * lib/jit_x86-cpu.c: Correct not properly tested case of using | |
1510 | %r12 as index register, what was causing an invalid assertion. | |
1511 | %r12 is mapped to the "extra" JIT_R3 register, and test cases | |
1512 | only test "standard" lightning registers. | |
1513 | ||
1514 | 2013-09-28 Paulo Andrade <pcpa@gnu.org> | |
1515 | ||
1516 | * lib/jit_ia64.c: Minor change to force collecting the maximum | |
1517 | instruction length in the --enable-devel-get-jit-size build | |
1518 | mode. The actual generated file did not change because the | |
1519 | sampling was large enough that it had already collected proper | |
1520 | information in the previously slightly buggy code (not forcing | |
1521 | a sync of the instructions that could be combined). | |
1522 | ||
1523 | 2013-09-27 Paulo Andrade <pcpa@gnu.org> | |
1524 | ||
1525 | * lib/jit_arm.c: Correct build when disassembler is | |
1526 | disabled. | |
1527 | ||
1528 | 2013-09-25 Paulo Andrade <pcpa@gnu.org> | |
1529 | ||
1530 | * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct some | |
1531 | off by one range checks (that were only accepting values | |
1532 | one less than the maximum allowed) and an invalid test | |
1533 | condition check that was forcing it to always use | |
1534 | indirect jumps even when reachable with an immediate | |
1535 | displacement. | |
1536 | ||
1537 | 2013-09-24 Paulo Andrade <pcpa@gnu.org> | |
1538 | ||
1539 | * lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c, | |
1540 | lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c, | |
1541 | lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c, | |
1542 | lib/jit_x86-sz.c: New files implementing static tables | |
1543 | with longest known instructions length generated to match | |
1544 | a lightning instruction. These tables should make it easier | |
1545 | to make it very unlikely to ever miscalculate, or by too | |
1546 | much, the size of a code buffer. | |
1547 | ||
1548 | * lib/jit_size.c: New file that aids to either collect | |
1549 | jit code size information, or use the information depending | |
1550 | on build options. | |
1551 | ||
1552 | * size.c: New helper file that parses input for, and create | |
1553 | an initial jit_$arch-sz.c file, that needs some minor edit | |
1554 | for arches with multiple configurations. | |
1555 | ||
1556 | * configure.ac, Makefile.am: Add the new, devel mode only | |
1557 | --enable-devel-get-jit-size configure option, that sets | |
1558 | compile time flags to collect jit code size information, | |
1559 | that will be used as input for the "noinst size program". | |
1560 | ||
1561 | * lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c, | |
1562 | lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c, | |
1563 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, | |
1564 | lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor | |
1565 | changes for the --enable-devel-get-jit-size build mode, | |
1566 | as well as the "production build mode" with jit code | |
1567 | size information. | |
1568 | ||
1569 | 2013-09-14 Paulo Andrade <pcpa@gnu.org> | |
1570 | ||
1571 | * include/lightning.h, lib/lightning.c: Add the new | |
1572 | jit_pointer_p interface, that returns a boolean value | |
1573 | telling if the pointer argument is inside the jit | |
1574 | code buffer. This is useful to avoid the need to add | |
1575 | extra labels and calls to jit_address to figure bounds | |
1576 | of code buffer, and still keep internal data private. | |
1577 | ||
1578 | 2013-09-13 Paulo Andrade <pcpa@gnu.org> | |
1579 | ||
1580 | * include/lightning.h, include/lightning/jit_private.h, | |
1581 | lib/jit_note.c: Change the code argument of jit_get_note | |
1582 | to a jit_pointer_t and make jit_get_note a public interface. | |
1583 | It was intended so since start, as a way to map an offset | |
1584 | in the code to a function name, file name and line number | |
1585 | mapping. | |
1586 | ||
1587 | 2013-09-11 Paulo Andrade <pcpa@gnu.org> | |
1588 | ||
1589 | * doc/body.texi: Correct reversed arguments in example of | |
1590 | usage in a (possibly) multi threaded, multiple jit_state_t | |
1591 | environments. | |
1592 | ||
1593 | * include/lightning/jit_arm.h, include/lightning/jit_private.h, | |
1594 | lib/jit_arm-cpu.c, lib/jit_arm.c: Make a previously, non | |
1595 | documented, global state private to the related jit_state_t | |
1596 | generating code. | |
1597 | ||
1598 | 2013-09-10 Paulo Andrade <pcpa@gnu.org> | |
1599 | ||
1600 | * check/self.c, check/self.ok: New files implementing simple | |
1601 | consistency check assertions. At first validating some macros | |
1602 | that use values from different sources agree. | |
1603 | ||
1604 | * check/Makefile.am: Update for the new test case. | |
1605 | ||
1606 | * include/lightning.h, lib/lightning.c: Add the new | |
1607 | jit_callee_save_p() call, that is intended to be used when | |
1608 | writing complex code using lightning, so that one does not | |
1609 | need to verify what backend is being used, or have access to | |
1610 | private data, to query if a register is callee save or not; | |
1611 | on several backends the scratch registers are actually callee | |
1612 | save. | |
1613 | ||
1614 | * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h, | |
1615 | include/lightning/jit_hppa.h, include/lightning/jit_mips.h, | |
1616 | include/lightning/jit_ppc.h, include/lightning/jit_sparc.h, | |
1617 | include/lightning/jit_x86.h: Add an explicit definition for | |
1618 | JIT_R3-JIT_Rn, JIT_V3-JIT_Vn and JIT_F6-JIT_Fn when applicable. | |
1619 | This allows one to write code based on "#if defined(JIT_XN)" | |
1620 | and therefore, not need to check what is the current backend | |
1621 | or have access to private data structures. This is particularly | |
1622 | useful when writing virtual machines with several specialized, | |
1623 | global registers. | |
1624 | ||
1625 | * lib/jit_ia64.c: Properly flag the callee save general | |
1626 | purpose registers as such, so that jit_callee_save_p() works | |
1627 | as intended. | |
1628 | ||
1629 | 2013-09-10 Paulo Andrade <pcpa@gnu.org> | |
1630 | ||
1631 | * check/lightning.c, configure.ac: Conditionally use the | |
1632 | code written to workaround a bug in the Hercules emulator, | |
1633 | as isnan and isinf are not available at least on HP-UX ia64. | |
1634 | ||
1635 | 2013-09-10 Paulo Andrade <pcpa@gnu.org> | |
1636 | ||
1637 | * lib/jit_s390x-cpu.c: Spill/reload correct callee save | |
1638 | float registers. | |
1639 | ||
1640 | 2013-09-10 Paulo Andrade <pcpa@gnu.org> | |
1641 | ||
1642 | * lib/jit_hppa-cpu.c: Correct code to call a function stored | |
1643 | in a register or a patched function address. | |
1644 | ||
1645 | 2013-09-10 Paulo Andrade <pcpa@gnu.org> | |
1646 | ||
1647 | * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring | |
1648 | the value of the "r2" callee save register. | |
1649 | ||
1650 | 2013-08-29 Paulo Andrade <pcpa@gnu.org> | |
1651 | ||
1652 | * lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update | |
1653 | of the thumb offset information, when checking if needing to | |
1654 | patch a jump from arm to thumb mode. The problem would happen when | |
1655 | remapping the code buffer, and the new address being lower than | |
1656 | the previous one. | |
1657 | ||
1658 | 2013-08-26 Paulo Andrade <pcpa@gnu.org> | |
1659 | ||
1660 | * configure.ac: Extend FreeBSD test to also handle NetBSD. | |
1661 | ||
1662 | * lib/jit_x86-cpu.c: Correct wrongly defined offset type of | |
1663 | ldxi_ui. Problem detected when building on NetBSD. | |
1664 | ||
1665 | * lib/lightning.c: Adjust code to handle NetBSD mremap, | |
1666 | where arguments do not match Linux mremap. | |
1667 | ||
1668 | 2013-08-26 Paulo Andrade <pcpa@gnu.org> | |
1669 | ||
1670 | * lib/jit_ppc.c: Correct C sequence point problem miscalculating | |
1671 | the actual function address in a function descriptor. Problem | |
1672 | happens with gcc 4.8.1 at least. | |
1673 | ||
1674 | 2013-08-11 Paulo Andrade <pcpa@gnu.org> | |
1675 | ||
1676 | * lib/jit_s390x-cpu.c: Correct code checking if immediate | |
1677 | fits instruction, but using the negated value. | |
1678 | ||
1679 | 2013-07-28 Paulo Andrade <pcpa@gnu.org> | |
1680 | ||
1681 | * include/lightning/jit_s390x.h, lib/jit_s390x-cpu.c, | |
1682 | lib/jit_s390x-fpu.c, lib/jit_s390x.c: New files | |
1683 | implementing the new s390x port. | |
1684 | ||
1685 | * configure.ac, include/lightning.h, | |
1686 | include/lightning/Makefile.am, | |
1687 | include/lightning/jit_private.h, | |
1688 | lib/Makefile.am, lib/jit_disasm.c, lib/lightning.c: | |
1689 | Minor adaptation for the new s390x backend. | |
1690 | ||
1691 | * check/float.tst: Update for the s390x result of | |
1692 | truncating +Inf to integer. | |
1693 | ||
1694 | * check/qalu_mul.tst: Add extra test cases to better test | |
1695 | high word of signed multiplication as the result is | |
1696 | adjust from unsigned multiplication on s390x. | |
1697 | ||
1698 | 2013-07-28 Paulo Andrade <pcpa@gnu.org> | |
1699 | ||
1700 | * check/lightning.c: Do not assume casting a double NaN or | |
1701 | Inf to float will produce the expected float NaN or Inf. | |
1702 | This is not true at least under s390x. | |
1703 | ||
1704 | 2013-07-28 Paulo Andrade <pcpa@gnu.org> | |
1705 | ||
1706 | * check/check.arm.sh, check/check.sh, check/check.swf.sh, | |
1707 | check/check.x87.sh: Properly check test programs output, | |
1708 | not just rely on the test program self testing the results | |
1709 | and not crashing. | |
1710 | ||
1711 | 2013-07-28 Paulo Andrade <pcpa@gnu.org> | |
1712 | ||
1713 | * lib/jit_aarch64.c: Remove unused macros left from cut&paste | |
1714 | of jit_arm.c. | |
1715 | ||
1716 | 2013-07-16 Paulo Andrade <pcpa@gnu.org> | |
1717 | ||
1718 | * include/lightning/jit_aarch64.h, lib/jit_aarch64-cpu.c, | |
1719 | lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: New files | |
1720 | implementing the new aarch64 port, as a new architecture, | |
1721 | not as an expansion of the existing armv[4-7] port. | |
1722 | ||
1723 | * check/lightning.c: Add aarch64 support and a small | |
1724 | change to recognize character constants as immediate | |
1725 | values. | |
1726 | ||
1727 | * check/float.tst: Add aarch64 preprocessor conditionals | |
1728 | to select proper expected value when converting [+-]Inf | |
1729 | and NaN to integer. | |
1730 | ||
1731 | * include/lightning/jit_arm.h, lib/jit_arm.c: Minor changes | |
1732 | to better match the new aarch64 files. | |
1733 | ||
1734 | * configure.ac, include/lightning.h, | |
1735 | include/lightning/Makefile.am, include/lightning/jit_private.h, | |
1736 | lib/Makefile.am, lib/lightning.c: Minor adjustments | |
1737 | for the aarch64 port. | |
1738 | ||
1739 | 2013-07-08 Paulo Andrade <pcpa@gnu.org> | |
1740 | ||
1741 | * NEWS, THANKS, configure.ac, doc/version.texi: Update for | |
1742 | the 1.99a second alpha release. | |
1743 | ||
1744 | 2013-06-25 Paulo Andrade <pcpa@gnu.org> | |
1745 | ||
1746 | * lib/jit_mips.c: Correct cut&paste error that caused wrong | |
1747 | stack offset calculation for double arguments in stack in | |
1748 | the o32 abi. | |
1749 | Correct typo in the __LITTLE_ENDIAN macro name, that came | |
1750 | from cut&paste error in the original typo in lib/jit_ppc.c. | |
1751 | ||
1752 | * lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the | |
1753 | __LITTLE_ENDIAN macro name. | |
1754 | ||
1755 | 2013-06-22 Paulo Andrade <pcpa@gnu.org> | |
1756 | ||
1757 | * check/lightning.c, configure.ac, include/lightning.h, | |
1758 | lib/lightning.c: Add tests and quirks to build/detect | |
1759 | and/or work on Irix. | |
1760 | ||
1761 | * include/lightning/jit_mips.h, lib/jit_mips-cpu.c, | |
1762 | lib/jit_mips-fpu.c, lib/jit_mips.c: Adapt code to run | |
1763 | in big endian mips, using the n32 abi. | |
1764 | ||
1765 | 2013-06-18 Paulo Andrade <pcpa@gnu.org> | |
1766 | ||
1767 | * include/lightning.h: Minor extra preprocessor testing | |
1768 | to "detect" byte order on x86 solaris, that now builds | |
1769 | and pass all test cases. | |
1770 | ||
1771 | 2013-06-18 Paulo Andrade <pcpa@gnu.org> | |
1772 | ||
1773 | * lib/jit_sparc-cpu.c: Correct compiler warning of value | |
1774 | used before assignment. The usage is bogus as the api | |
1775 | requires always patching jumps, but the random value used | |
1776 | could cause an assertion due to invalid displacement. | |
1777 | ||
1778 | * lib/jit_sparc.c: Always load and store double arguments | |
1779 | in stack as 2 float loads or stores, for safety, as unaligned | |
1780 | access is not allowed in Sparc Solaris. | |
1781 | ||
1782 | 2013-06-14 Paulo Andrade <pcpa@gnu.org> | |
1783 | ||
1784 | * configure.ac: Force -mlp64 to CFLAGS on HP-UX ia64 port. | |
1785 | It is the only supported mode, and expects gcc as C compiler. | |
1786 | ||
1787 | * include/lightning.h, lib/jit_ia64-cpu.c, lib/jit_ia64.c: | |
1788 | Correct ia64 port to work on HP-UX that runs it in big endian | |
1789 | mode. | |
1790 | ||
1791 | 2013-06-10 Paulo Andrade <pcpa@gnu.org> | |
1792 | ||
1793 | * lib/jit_hppa.c: Sanitize the cache synchronization inline | |
1794 | assembly code that was doing twice the work and redundantly | |
1795 | flushing the end address every loop iteration. | |
1796 | ||
1797 | 2013-06-09 Paulo Andrade <pcpa@gnu.org> | |
1798 | ||
1799 | * configure.ac, check/Makefile.am, doc/Makefile.am: Do not | |
1800 | explicitly link to -ldl, but instead autodetect the library | |
1801 | with dlopen, dlsym, etc. | |
1802 | ||
1803 | * check/lightning.c: Add workaround to apparently buggy | |
1804 | getopt in HP-UX that sets optind to the wrong index, and | |
1805 | use RTLD_NEXT on HP-UX instead of RTLD_DEFAULT to dlsym | |
1806 | global symbols. | |
1807 | ||
1808 | * include/lightning.h: Rework definitions of wordsize and | |
1809 | byte order to detect proper values on HP-UX. | |
1810 | ||
1811 | * lib/lightning.c: Minor correction to use MAP_ANONYMOUS | |
1812 | instead of MAP_ANON on HP-UX. | |
1813 | ||
1814 | * lib/jit_hppa.c: Float arguments must be passed on integer | |
1815 | registers on HP-UX, not only for varargs functions. | |
1816 | Add code to properly clear instruction cache. This was | |
1817 | not required on Debian hppa port, but may have been working | |
1818 | by accident. | |
1819 | ||
1820 | * lib/jit_hppa-cpu.c: Follow pattern of HP-UX binaries and | |
1821 | use bve,n instead of bv,n to return from functions. | |
1822 | ||
1823 | * lib/jit_hppa-fpu.c: For some reason "fst? frX,rX,(rY)" did | |
1824 | not work on the tested computer (HP-UX B.11.23 U 9000/785 HP-UX) | |
1825 | so the code was changed, at first for __hpux only to add the | |
1826 | base and offset register and use the instruction with an | |
1827 | immediate (zero) offset. | |
1828 | ||
1829 | 2013-06-07 Paulo Andrade <pcpa@gnu.org> | |
1830 | ||
1831 | * check/lightning.c, lib/jit_disasm.c, lib/jit_ppc-cpu.c, | |
1832 | lib/jit_ppc-fpu.c, lib/jit_ppc.c, include/lightning.h, | |
1833 | include/lightning/jit_ppc.h, include/lightning/jit_private.h: | |
1834 | Adapt code to work on 32 bit AIX ppc using gcc. Most changes | |
1835 | are basically to adapt the elf64 logic to 32 bit, as it does | |
1836 | not use the same convention of 32 bit Darwin ppc. | |
1837 | ||
1838 | * check/stack.tst: Add a fake memcpy function to the test | |
1839 | case if running under AIX, as it is not available to dlsym. | |
1840 | ||
1841 | * configure.ac: Check for getopt.h header, not available in | |
1842 | AIX. | |
1843 | ||
1844 | 2013-06-01 Paulo Andrade <pcpa@gnu.org> | |
1845 | ||
1846 | * include/lightning/jit_hppa.h, lib/jit_hppa-cpu.c, | |
1847 | lib/jit_hppa-fpu.c, lib/jit_hppa.c: New files implementing | |
1848 | the hppa port. Built on Debian Linux PA-RISC 2.0, 32 bit. | |
1849 | ||
1850 | * check/float.tst: Add preprocessor for hppa expected | |
1851 | values when converting NaN and +-Inf to an integer. | |
1852 | ||
1853 | * check/ldst.inc: Ensure double load/store tests use an | |
1854 | 8 byte aligned address by default. | |
1855 | ||
1856 | * lib/lightning.c: Correct a bug found during tests in | |
1857 | the new port, where qmul* and qdiv* were not properly | |
1858 | setting one of the result registers as modified in the | |
1859 | function, what would be a problem if the only "write" | |
1860 | usage were the qmul* or qdiv*. | |
1861 | ||
1862 | * check/varargs.tst, check/varargs.ok: Add one extra | |
1863 | interleaved integer/double test to validate proper code | |
1864 | generation in the extra case. | |
1865 | ||
1866 | * check/lightning.c, configure.ac, include/lightning.h, | |
1867 | include/lightning/Makefile.am, | |
1868 | include/lightning/jit_private.h, lib/Makefile.am, | |
1869 | lib/jit_disasm.c: Update for the hppa port. | |
1870 | ||
1871 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1872 | ||
1873 | * check/varargs.tst: Correct misplaced .align directive | |
1874 | that was causing the double buffer to not be aligned at | |
1875 | 8 bytes. | |
1876 | * lib/jit_ia64-cpu.c: | |
1877 | Properly implement abi for excess arguments passed on | |
1878 | stack. | |
1879 | Simplify load/store with immediate displacement argument | |
1880 | with zero value. | |
1881 | Simplify some calls to "subi" changing to "addi" with | |
1882 | a negative argument. | |
1883 | Remove some #if 0'ed code, that could be useful in | |
1884 | special conditions, but the most useful one would be | |
1885 | to "optimize" "static" jit functions, but for the sake | |
1886 | of simplicity, jit functions are implemented in a way | |
1887 | that can be passed back to C code as C function pointers. | |
1888 | Add an attribute to prototypes of several unused functions. | |
1889 | These functions are defined for the sake of implementing all | |
1890 | Itanium documented instructions, but a significant amount of | |
1891 | them is not used by lightning. | |
1892 | * lib/jit_ia64-fpu.c: Simplify load/store with zero immediate | |
1893 | displacement and add unused attribute for functions not used | |
1894 | by lightning, but required to provide macros implementing all | |
1895 | Itanium documented instructions. | |
1896 | * lib/jit_ia64.c: Update for the properly implemented abi | |
1897 | for stack arguments. | |
1898 | * lib/lightning.c: Mark an unused function as such. | |
1899 | ||
1900 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1901 | ||
1902 | lib/jit_ia64-cpu.c: | |
1903 | Correct immediate range check of integer comparisons when | |
1904 | inverting arguments. | |
1905 | Correct gei_u that was not decrementing immediate when | |
1906 | inverting arguments. | |
1907 | Correct b?add* and b?sub* that were not properly updating | |
1908 | the result register. | |
1909 | ||
1910 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1911 | ||
1912 | * lib/jit_ia64-cpu.c: Correct wrong mapping of 2 instructions | |
1913 | in "M-, stop, M-, stop" translation, that was ignoring the | |
1914 | last stop (implemented as a nop I- stop). | |
1915 | ||
1916 | * lib/jit_ia64-fpu.c: Properly implement fnorm.s and fnorm.d, | |
1917 | as well as the proper integer to float or double conversion. | |
1918 | ||
1919 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1920 | ||
1921 | * lib/jit_ia64-cpu.c: Correct bogus implementation of ldr_T | |
1922 | for signed integers, that was using ld1.s, ld2.s and ld4.s. | |
1923 | The ".s" stands for speculative load, not sign extend. | |
1924 | ||
1925 | * lib/jit_ia64-fpu.c: Correct bogus implementation of ldxr_T | |
1926 | for float and double. The third (actually, second) argument | |
1927 | is indeed added to the base register, but the base register | |
1928 | is modified. The actual M7 implementation was already correct, | |
1929 | just the ldxr_f and ldxr_d implementation that was kept in | |
1930 | a prototype state, misinterpreting what M7 does. | |
1931 | ||
1932 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1933 | ||
1934 | * lib/jit_ia64-cpu.c: Correct X2 pattern matching by preventing | |
1935 | it to attempt to require a stop between the L and the X | |
1936 | instruction; that is, check the registers and predicates | |
1937 | before emitting the L instruction, not after. | |
1938 | ||
1939 | * lib/jit_ia64-fpu.c: Slightly simplify and correct | |
1940 | divr_f and divrd_d implementation. | |
1941 | ||
1942 | * check/lightning.c: Add __ia64__ preprocessor define | |
519a9ea1 | 1943 | on Itanium. |
4a71579b PC |
1944 | |
1945 | * check/alu.inc, check/clobber.tst, check/float.tst: Define | |
1946 | several macros conditionally to __ia64__. This is required | |
1947 | because __ia64__ jit generation can use way too many memory, | |
1948 | due to not implementing instruction reordering to avoid | |
1949 | as much as possible "stops", what causes way too many nops | |
1950 | to be generated, as well as the fact that division and | |
1951 | remainder requires function calls, and float division | |
1952 | requires significant code to implement. | |
1953 | ||
1954 | 2013-04-27 Paulo Andrade <pcpa@gnu.org> | |
1955 | ||
1956 | * include/lightning.h: Add new backend specific movr_w_d, | |
1957 | movr_d_w and movi_d_w codes as helpers to ia64 varargs | |
1958 | functions arguments. | |
1959 | ||
1960 | * lib/jit_ia64-cpu.c: | |
1961 | Correct wrong encoding of A5 small integers. | |
1962 | Correct define of "mux" instruction modifiers. | |
1963 | Correct ordering of arguments and predicates of cmp_xy | |
1964 | implementation with immediate arguments; like most other | |
1965 | codes with an immediate, the immediate is the second, not | |
1966 | the third argument. | |
1967 | ||
1968 | * lib/jit_ia64-fpu.c: Actual implementation of the code | |
1969 | to move to/from gpr to/from fpr, to implement varargs abi. | |
1970 | ||
1971 | * lib/jit_ia64.c: Make fpr argument registers not allocatable | |
1972 | as temporaries, no need for the extra checks when there are | |
1973 | plenty registers. | |
1974 | ||
1975 | * lib/jit_print.c, lib/lightning.c: Minor updates for the | |
1976 | new movr_w_d, movr_d_w and movi_d_w codes. | |
1977 | ||
1978 | 2013-04-26 Paulo Andrade <pcpa@gnu.org> | |
1979 | ||
1980 | * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct code to | |
1981 | also insert a stop to break an instruction group if a | |
1982 | register is written more than once in the same group. | |
1983 | This may happen if a register is argument and result of | |
1984 | some lightning call (not a real instruction). The most | |
1985 | common case should be code in the pattern: | |
1986 | movl rn=largenum | |
1987 | ... | |
1988 | mov rn=smallnum | |
1989 | where "rn" would end up holding "largenum". | |
1990 | But the problem possibly could happen in other circumstances. | |
1991 | ||
1992 | 2013-04-26 Paulo Andrade <pcpa@gnu.org> | |
1993 | ||
1994 | * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c, | |
1995 | lib/jit_ia64-fpu.c, lib/jit_ia64.c: | |
1996 | Relocate JIT_Rn registers to the local registers, as, like | |
1997 | float registers, div/rem and sqrt are implemented as function | |
1998 | calls, and may overwrite non saved scratch registers. | |
1999 | Change patch_at to receive a jit_code_t instead of a | |
2000 | jit_node_t, so that it is easier to "inline" patches when | |
2001 | some instruction requires complex code to implement, e.g. | |
2002 | uneq and ltgt. | |
2003 | Correct arguments to FMA and FMA like instructions that, | |
2004 | due to a cut&paste error were passing the wrong argument | |
2005 | to the related F- implementation function. | |
2006 | Rewrite ltgt to return the proper result if one (or both) | |
2007 | of the arguments is unordered. | |
2008 | ||
2009 | 2013-04-26 Paulo Andrade <pcpa@gnu.org> | |
2010 | ||
2011 | * include/lightning/jit_ia64.h, include/lightning/jit_private.h, | |
2012 | lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c, | |
2013 | lib/lightning.c: Rework code to detect need of a "stop" to | |
2014 | also handle predicates, as if a predicate is written, it | |
2015 | cannot be read in the same instruction group. | |
2016 | Use a single jit_regset_t variable for all registers when | |
2017 | checking need for a stop (increment value by 128 for | |
2018 | float registers). | |
2019 | Correct wrong "subi" implementation, as the code executed | |
2020 | is r0=im-r1, not r0=r1-im. | |
2021 | Use standard lightning 6 fpr registers, and rework to | |
2022 | use callee save float registers, that may be spill/reloaded | |
2023 | in prolog/epilog. This is required because some jit | |
2024 | instructions implementations need to call functions; currently | |
2025 | integer div/mod and float sqrt, what may change the value of | |
2026 | scratch float registers. | |
2027 | Rework point of "sync" of branches that need to return a | |
2028 | patch'able address, because the need for a "stop" before a | |
2029 | predicate read causes all branches to be the instruction | |
2030 | in slot 0, as there is no template to "stop" and branch | |
2031 | in the same instruction "bundle". | |
2032 | ||
2033 | 2013-04-25 Paulo Andrade <pcpa@gnu.org> | |
2034 | ||
2035 | * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c, | |
2036 | lib/jit_ia64-fpu.c, lib/jit_ia64.c: New files implementing | |
2037 | the basic infrastructure of an Itanium port. The code | |
2038 | compiles and can generate jit for basic hello world like | |
2039 | functions. | |
2040 | ||
2041 | * check/lightning.c, configure.ac, include/lightning.h, | |
2042 | include/lightning/Makefile.am, include/lightning/jit_private.h, | |
2043 | lib/Makefile.am, lib/lightning.c: Update for the Itanium | |
2044 | port. | |
2045 | ||
2046 | * lib/jit_mips-cpu.c, lib/jit_mips.c: Correct typo and | |
2047 | make the jit_carry register local to the jit_state_t. | |
2048 | This matches code reviewed in the Itanium port, that | |
2049 | should use the same base logic to handle carry/borrow. | |
2050 | ||
2051 | 2013-04-10 Paulo Andrade <pcpa@gnu.org> | |
2052 | ||
2053 | * include/lightning/jit_private.h, lib/jit_arm.c, | |
2054 | lib/jit_mips-cpu.c, lib/jit_mips.c, lib/jit_ppc-cpu.c, | |
2055 | lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c, | |
2056 | lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c, | |
2057 | lib/lightning.c: Change all jit_regset macros to take | |
2058 | a pointer argument, to avoid structure copies when | |
2059 | adding a port to an architecture with more than 64 | |
2060 | registers. | |
2061 | ||
2062 | 2013-04-08 Paulo Andrade <pcpa@gnu.org> | |
2063 | ||
2064 | * lib/jit_arm.c, lib/jit_ppc.c: Do not rely on __clear_cache | |
2065 | aligning to the next page boundary the end argument. It may | |
2066 | actually truncate it. | |
2067 | ||
2068 | 2013-03-29 Paulo Andrade <pcpa@gnu.org> | |
2069 | ||
2070 | * include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_memory.c, | |
2071 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c, | |
2072 | lib/lightning.c: Do not start over jit generation if can grow | |
2073 | the code buffer with mremap without moving the base pointer. | |
2074 | ||
2075 | 2013-03-29 Paulo Andrade <pcpa@gnu.org> | |
2076 | ||
2077 | * lib/jit_memory.c: Implement a simple memory allocation wrapper | |
2078 | to allow overriding calls to malloc/calloc/realloc/free, as well | |
2079 | as ensuring all memory containing pointers is zero or points to | |
2080 | allocated memory. | |
2081 | ||
2082 | * include/lightning.h, include/lightning/jit_private.h: Definitions | |
2083 | for the memory allocation wrapper. | |
2084 | ||
2085 | * lib/Makefile.am: Update for new jit_memory.c file. | |
2086 | ||
2087 | * lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_note.c, | |
2088 | lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: | |
2089 | Use the new memory allocation wrapper code. | |
2090 | ||
2091 | 2013-03-22 Paulo Andrade <pcpa@gnu.org> | |
2092 | ||
2093 | * configure.ac, include/lightning/jit_private.h, lib/lightning.c: | |
2094 | Remove dependency on gmp. Only a simple bitmap was required, and | |
2095 | that was not enough reason to force linking to gmp and possible | |
2096 | complications caused by it. | |
2097 | ||
2098 | 2013-03-10 Paulo Andrade <pcpa@gnu.org> | |
2099 | ||
2100 | * include/lightning.h: Add check for __powerpc__ defined | |
2101 | in Linux, while Darwin defines __ppc__. | |
2102 | ||
2103 | * include/lightning/jit_ppc.h: Adjust register definitions | |
2104 | for Darwin 32 bit and Linux 64 bit ppc usage and/or ABI. | |
2105 | ||
2106 | * include/lightning/jit_private.h: Add proper check for | |
2107 | Linux __powerpc__ and an data definition for an workaround | |
2108 | to properly handle code that starts with a jump to a "main" | |
2109 | label. | |
2110 | ||
2111 | * lib/jit_disasm.c: Add extra disassembler initialization | |
2112 | for __powerpc64__. | |
2113 | ||
2114 | * lib/jit_ppc-cpu.c: Add extra macros and functions, and | |
2115 | correct/adapt previous ones to handle powerpc64. | |
2116 | ||
2117 | * lib/jit_ppc-fpu.c: Adapt for 64 bit wordsize. Basically | |
2118 | add conversion from/to int32/int64 and proper handling of | |
2119 | load/store offsets too large for 32 bit. | |
2120 | ||
2121 | * lib/jit_ppc.c: Add calls to 64 bit codes and adaptation | |
2122 | for the PowerPC 64 bit Linux ABI. | |
2123 | ||
2124 | * lib/jit_arm.c, lib/jit_mips.c, lib/jit_sparc, lib/jit_x86.c, | |
2125 | lib/lightning.c: Correct off by one error when restarting jit | |
2126 | of a function due to finding too late that needs to spill/reload | |
2127 | some register. Problem was found by accident on a very special | |
2128 | condition during PowerPC 64 code adaptation. | |
2129 | ||
2130 | 2013-03-08 Paulo Andrade <pcpa@gnu.org> | |
2131 | ||
2132 | * check/lightning.c: Add missing ppc preprocessor definition. | |
2133 | ||
2134 | 2013-03-06 Paulo Andrade <pcpa@gnu.org> | |
2135 | ||
2136 | * check/float.tst: Comment out the int to negative infinity | |
2137 | test in mips for the moment because not all Loongson agrees | |
2138 | on the result. | |
2139 | ||
2140 | * lib/jit_disasm.c: Add a test instead of an assertion | |
2141 | when loading symbols for disassembly due to a failure with | |
2142 | a simple binutils build in Debian mipsel64. | |
2143 | ||
2144 | 2013-03-06 Paulo Andrade <pcpa@gnu.org> | |
2145 | ||
2146 | * include/lightning/jit_private.h, lib/jit_arm-cpu.c, | |
2147 | lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips-cpu.c, | |
2148 | lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc-cpu.c, | |
2149 | lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c, | |
2150 | lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c, | |
2151 | lib/lightning.c: Add an extra structure for data storage | |
2152 | during jit generation, and release it after generating | |
2153 | jit, to reduce a bit memory usage, and also to make it | |
2154 | easier to understand what data is available during | |
2155 | jit runtime. | |
2156 | ||
2157 | 2013-03-06 Paulo Andrade <pcpa@gnu.org> | |
2158 | ||
2159 | * lib/lightning.c: Make data and code buffer readonly. | |
2160 | ||
2161 | 2013-02-20 Paulo Andrade <pcpa@gnu.org> | |
2162 | ||
2163 | * doc/body.texi: Fool proof validate the examples of what | |
2164 | an assembly-language programmer would write and correct the | |
2165 | wrong sparc example. | |
2166 | ||
2167 | 2013-02-19 Paulo Andrade <pcpa@gnu.org> | |
2168 | ||
2169 | * doc/body.texi: Add back the SPARC code generation example. | |
2170 | ||
2171 | 2013-02-19 Paulo Andrade <pcpa@gnu.org> | |
2172 | ||
2173 | * check/lightning.c: Remove state flag to work with partial | |
2174 | sparc port, by just disassembling if there was incomplete | |
2175 | code generation. | |
2176 | ||
2177 | * jit_sparc-cpu.c: Correct wrong range check for immediate | |
2178 | integer constants (off by one bit shift). | |
2179 | Correct macro implementing equivalent "rd %y, rd" assembly. | |
2180 | Implement qmul* and qdiv*. | |
2181 | ||
2182 | * jit_sparc.c: Update for qmul* and qdiv* and remove logic | |
2183 | to handle incomplete code generation during sparc port. | |
2184 | ||
2185 | 2013-02-18 Paulo Andrade <pcpa@gnu.org> | |
2186 | ||
2187 | * check/float.tst: Add sparc to list of known NaN and +-Inf | |
2188 | to integer conversion. | |
2189 | ||
2190 | * check/lightning.c: Define __sparc__ to preprocessor in | |
2191 | the sparc backend. | |
2192 | ||
2193 | * include/lightning/jit_private.h: Correct wrong definition | |
2194 | of emit_stxi_d, that has lived for a long time, but would | |
2195 | cause problems whenever needing to spill/reload a float | |
2196 | register. | |
2197 | ||
2198 | * include/lightning/jit_sparc.h: Can only use %g2,%g3,%g4 | |
2199 | for scratch variables, as other "global" registers are | |
2200 | reserved for the system, e.g. libc. | |
2201 | Reorder float register naming to make it easier to | |
2202 | access odd float registers, so that generating code for | |
2203 | pusharg and getarg is easier for the IR. | |
2204 | ||
2205 | * lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c: Update to match | |
2206 | new code in jit_sparc-cpu.c. It must call jit_get_reg | |
2207 | with jit_class_nospill if using the register to move | |
2208 | an unconditional branch address to it, as the reload | |
2209 | will not happen (actually could happen in the delay | |
2210 | slot...) | |
2211 | ||
2212 | * lib/jit_sparc-cpu.c: Correct wrong macro definition for | |
2213 | ldxr_s. | |
2214 | Properly implement div* and implement rem. Div* needs | |
2215 | to use the y register, and rem* needs to be synthesized. | |
2216 | Correct b?sub* macro definitions. | |
2217 | ||
2218 | * lib/jit_sparc-fpu.c: Correct reversed float to/from double | |
2219 | conversion. | |
2220 | Correct wrong jit_get_reg call asking for a gpr and then | |
2221 | using the fpr with that number. | |
2222 | Correct wrong branch displacement computation for | |
2223 | conditional branches. | |
2224 | ||
2225 | * lib/jit_sparc.c: Correct getarg_d and pushargi_d implementation. | |
2226 | Add rem* entries to the switch converting IR to machine code. | |
2227 | ||
2228 | * lib/lightning.c: Correct a problem detected when adding | |
2229 | the jit_class_nospill flag to jit_get_reg, that was caused | |
2230 | when having a branch to an "epilog" node, what would cause | |
2231 | the code to think all registers in unknown state were live, | |
2232 | while in truth, all registers in unknown state in the | |
2233 | "just after return" point are actually dead. | |
2234 | ||
2235 | 2013-02-17 Paulo Andrade <pcpa@gnu.org> | |
2236 | ||
2237 | * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, | |
2238 | lib/jit_sparc-fpu.c, lib/jit_sparc.c: New files implementing | |
2239 | the basic framework of the sparc port. | |
2240 | ||
2241 | * configure.ac, include/lightning.h, include/lightning/Makefile.am, | |
2242 | include/lightning/jit_private.h, lib/jit_disasm.c: Update | |
2243 | for the sparc port framework. | |
2244 | ||
2245 | * lib/jit_mips.c: Correct reversed retr/reti logic. | |
2246 | ||
2247 | * lib/jit_ppc.c: Correct misspelled __LITTLE_ENDIAN. | |
2248 | ||
2249 | * lib/lightning.c: Always do byte hashing in hash_data, because | |
2250 | the logic to "compress" strings causes large pointers to not | |
2251 | be guaranteed aligned at 4 byte boundaries. | |
2252 | Update for the sparc port framework. | |
2253 | ||
2254 | 2013-02-11 Paulo Andrade <pcpa@gnu.org> | |
2255 | ||
2256 | * lib/jit_arm.c: Correct jit_pushargi_f in the arm hardfp abi. | |
2257 | Most of the logic uses even numbered register numbers, so that | |
2258 | a float and a double can be used in the same register, but | |
2259 | the abi requires packing the float arguments, so jit_pushargi_f | |
2260 | needs to allocate a temporary register to modify only the | |
2261 | proper register argument (or be very smart to push two | |
2262 | immediate arguments if applicable). | |
2263 | ||
2264 | 2013-02-11 Paulo Andrade <pcpa@gnu.org> | |
2265 | ||
2266 | * include/lightning.h, lib/lightning.c: Implement the new | |
2267 | jit_clear_state and jit_destroy_state calls. jit_clear_state | |
2268 | releases all memory not required during jit_execution; that | |
2269 | is, leaves only the mmap'ed data and code buffers allocated. | |
2270 | jit_destroy_state releases the mmap'ed buffers as well as | |
2271 | the jit_state_t object itself, that holds pointers to the | |
2272 | code and data buffers, as well as annotation pointers (for | |
2273 | disassembly or backtrace) in the data buffer. | |
2274 | ||
2275 | * lib/jit_note.c: Correct invalid vector offset access. | |
2276 | ||
2277 | * check/ccall.c, check/lightning.c, doc/ifib.c, doc/incr.c, | |
2278 | doc/printf.c, doc/rfib.c, doc/rpn.c: Use the new jit_clear_state | |
2279 | and jit_destroy_state calls, to demonstrate the new code to | |
2280 | release all jit memory. | |
2281 | ||
2282 | * doc/body.texi: Add basic documentation and usage description | |
2283 | of jit_clear_state and jit_destroy_state. | |
2284 | ||
2285 | 2013-02-11 Paulo Andrade <pcpa@gnu.org> | |
2286 | ||
2287 | * include/lightning/jit_private.h, lib/jit_note.c, lib/lightning.c: | |
2288 | Store all annotation information in the mmap'ed area reserved for | |
2289 | read only data. This adds code to not allocate memory for jit_note_t | |
2290 | objects, and to relocate jit_line_t objects and its contents after | |
2291 | calculating annotation information. The jit_line_t objects are | |
2292 | relocated because it is not possible to always calculate before | |
2293 | hand data layout because note information may be extended or | |
2294 | redundant entries removed, as well as allowed to be added in | |
2295 | non sequential order. | |
2296 | A bug was also corrected in _jit_set_note, that was causing it | |
2297 | to allocate new jit_line_t objects when not needed. It was still | |
2298 | working correctly, but allocating way more memory than required. | |
2299 | ||
2300 | 2013-02-05 Paulo Andrade <pcpa@gnu.org> | |
2301 | ||
2302 | *include/lightning.h, lib/lightning.c: Add the new jit_live code | |
2303 | to explicitly mark a register as live. It is required to avoid | |
2304 | assuming functions always return a value in the gpr and fpr return | |
2305 | register, and to avoid the need of some very specialized codes | |
2306 | that vary too much from backend to backend, to instruct the | |
2307 | optimization code the return register is live. | |
2308 | ||
2309 | * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, | |
2310 | lib/jit_x86.c: Update for the new jit_live code. | |
2311 | ||
2312 | * check/ret.ok, check/ret.tst: New files implementing a simple | |
2313 | test case that would previously fail at least in ix86/x86_64. | |
2314 | ||
2315 | * check/Makefile.am: Update for new "ret" test case. | |
2316 | ||
2317 | 2013-02-05 Paulo Andrade <pcpa@gnu.org> | |
2318 | ||
2319 | * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Validate and correct | |
2320 | problems in the qmul and qdiv ppc implementation. | |
2321 | ||
2322 | 2013-02-04 Paulo Andrade <pcpa@gnu.org> | |
2323 | ||
2324 | * include/lightning.h, include/lightning/jit_private.h, | |
2325 | lib/jit_arm-cpu.c, lib/jit_arm.c, lib/jit_mips-cpu.c, | |
2326 | lib/jit_mips.c, lib/jit_ppc-cpu.c, lib/jit_ppc.c, | |
2327 | lib/jit_x86-cpu.c, lib/jit_x86.c, lib/lightning.c: | |
2328 | Implement the new qmul and qdiv instructions that return signed | |
2329 | and unsigned lo/hi multiplication result and div/rem division result. | |
2330 | These should be useful for jit translation of code that needs to | |
2331 | know if a multiplication overflows (no branch opcode added) or if | |
2332 | a division is exact (easy check if remainder is zero). | |
2333 | ||
2334 | * check/lightning.c, lib/jit_print.c, check/Makefile.am, | |
2335 | check/all.tst: Update for the new qmul and qdiv instructions. | |
2336 | ||
2337 | * check/qalu.inc, check/qalu_div.ok, check/qalu_div.tst, | |
2338 | check/qalu_mul.ok, check/qalu_mul.tst: New files implementing | |
2339 | simple test cases for qmul and qdiv. | |
2340 | ||
2341 | 2013-01-30 Paulo Andrade <pcpa@gnu.org> | |
2342 | ||
2343 | * doc/body.texi: Correct "jmpi" description that incorrectly | |
2344 | told it was possible to pass any address as jump target. The | |
2345 | only way to do that is "movi+jmpr". | |
2346 | ||
2347 | 2013-01-30 Paulo Andrade <pcpa@gnu.org> | |
2348 | ||
2349 | * lib/jit_x86-cpu.c: Correct undefined behavior code. | |
2350 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143 | |
2351 | ||
2352 | 2013-01-29 Paulo Andrade <pcpa@gnu.org> | |
2353 | ||
2354 | * configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER | |
2355 | to have HAVE_CONFIG_H defined with latest aclocal. | |
2356 | ||
2357 | * include/lightning/jit_private.h, lib/lightning.c: Add new | |
2358 | abstraction to use an heuristic to calculate amount of space | |
2359 | required for jit generation, and code to reallocate buffer if | |
2360 | did miscalculate it. | |
2361 | ||
2362 | * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c: | |
2363 | Update to use new code to estimate and resize of required buffer | |
2364 | for jit code. | |
2365 | ||
2366 | * lib/jit_x86-cpu.c: Minor cosmetic change to avoid adding a | |
2367 | non required rex prefix when calling a function pointer stored | |
2368 | in a register. | |
2369 | ||
2370 | 2013-01-24 Paulo Andrade <pcpa@gnu.org> | |
2371 | ||
2372 | * check/Makefile.am: "make debug" target should pass only | |
2373 | the main test tool program as argument for running gdb | |
2374 | ||
2375 | * configure.ac: Add the --enable-assertions options. | |
2376 | ||
2377 | * doc/Makefile.am, doc/body.texi, doc/lightning.texi: | |
2378 | Major rewrite of the documentation to match the current | |
2379 | implementation. | |
2380 | ||
2381 | * doc/version.texi: Automatic date update. | |
2382 | ||
2383 | * doc/ifib.c, doc/incr.c, doc/printf.c, doc/rfib.c, doc/rpn.c: | |
2384 | Implementation of the documentation examples, that are also | |
2385 | compiled during a normal build. | |
2386 | ||
2387 | * doc/p-lightning.texi, doc/porting.texi, doc/toc.texi, | |
2388 | doc/u-lightning.texi, doc/using.texi: These files were | |
2389 | renamed in the documentation rewrite, as the documentation | |
2390 | was significantly trimmed due to full removal of the porting | |
2391 | chapters. Better porting documentation should be added but | |
2392 | for the moment it was just removed the documentation not | |
2393 | matching the implementation. | |
2394 | ||
2395 | 2013-01-18 Paulo Andrade <pcpa@gnu.org> | |
2396 | ||
2397 | * lib/jit_note.c: Correct bounds check and wrong code keeping | |
2398 | a pointer that could be changed after a realloc call. | |
2399 | ||
2400 | 2013-01-18 Paulo Andrade <pcpa@gnu.org> | |
2401 | ||
2402 | * check/3to2.tst, check/add.tst, check/allocai.tst, check/bp.tst, | |
2403 | check/call.tst, check/ccall.c, check/clobber.tst, check/divi.tst, | |
2404 | check/fib.tst, check/ldsti.tst, check/ldstr-c.tst, check/ldstr.tst, | |
2405 | check/ldstxi-c.tst, check/ldstxi.tst, check/ldstxr-c.tst, | |
2406 | check/ldstxr.tst, check/lightning.c, check/rpn.tst, check/stack.tst, | |
2407 | check/varargs.tst, include/lightning.h, | |
2408 | include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_disasm.c, | |
2409 | lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc.c, lib/jit_print.c, | |
2410 | lib/jit_x86.c, lib/lightning.c: Extend the "jit_note" abstraction | |
2411 | with the new "jit_name" call, that receives a string argument, and | |
2412 | should usually be called to mark boundaries of functions of code | |
2413 | generating jit (that is, it is not expected that the language | |
2414 | generating jit map its functions to jit functions). | |
2415 | ||
2416 | 2013-01-17 Paulo Andrade <pcpa@gnu.org> | |
2417 | ||
2418 | * check/add.tst, check/allocai.tst, check/bp.tst, check/divi.tst, | |
2419 | check/fib.tst, check/lightning.c, include/lightning/jit_arm.h, | |
2420 | include/lightning/jit_mips.h, include/lightning/jit_ppc.h, | |
2421 | include/lightning/jit_private.h, include/lightning/jit_x86.h: | |
2422 | Make JIT_RET, JIT_FRET and JIT_SP private. These should not be | |
2423 | used in any operations due to frequently having special | |
2424 | constraints (usually JIT_FRET). JIT_FP must be made available | |
2425 | because it must be used as the base register to access stack | |
2426 | space allocated with jit_allocai. | |
2427 | ||
2428 | 2013-01-14 Paulo Andrade <pcpa@gnu.org> | |
2429 | ||
2430 | * include/lightning.h, lib/lightning.c: Add an extra align | |
2431 | argument to the jit_data call (that should be made private), | |
2432 | so that it should not align strings at 8 bytes. | |
2433 | Correct the jit_note call to include the null ending byte | |
2434 | when adding label/note names to the "jit data section". | |
2435 | ||
2436 | 2013-01-11 Paulo Andrade <pcpa@gnu.org> | |
2437 | ||
2438 | * lib/jit_note.c: New file implementing a simple string+integer | |
2439 | annotation, that should be used to map filename and line number | |
2440 | to offsets in the generated jit. | |
2441 | ||
2442 | * include/lightning.h, lib/lightning.c: Update for the new | |
2443 | note code. | |
2444 | Add an extra mandatory argument to init_jit, that is used | |
2445 | as argument to bfd_openr. | |
2446 | Change from generic void* to char* the argument to jit_note | |
2447 | and add an extra integer argument, to map to filename and | |
2448 | line number. | |
2449 | ||
2450 | * check/ccall.c, check/lightning.c, include/lightning/jit_private.h, | |
2451 | lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_ppc.c, | |
2452 | lib/jit_print.c, lib/jit_x86.c: lib/Makefile.am: Update for the | |
2453 | new annotation code. | |
2454 | ||
2455 | * configure.ac, check/Makefile.am: Update to work with latest | |
2456 | automake. | |
2457 | ||
2458 | 2013-01-09 Paulo Andrade <pcpa@gnu.org> | |
2459 | ||
2460 | * include/lightning.h, lib/jit_arm.c, jit_mips-fpu.c, | |
2461 | lib/jit_mips.c, lib/jit_print.c, lib/jit_x86.c, lib/lightning.c: | |
2462 | Remove the jit_code_getarg_{f,d} and jit_code_pusharg{i,r}_{f,d} | |
2463 | calls, replacing them with the new, internal only, jit_movr_w_f, | |
2464 | jit_mov{r,i}_f_w, jit_movr_ww_d, and jit_mov{i,r}_d_ww, that | |
2465 | better describe the operation being done, and allow removing | |
2466 | the hackish code to detect special conditions for arm when | |
2467 | moving from/to vfp from/to a grp register pair. | |
2468 | Rename jit_code_retval_{f,d} to jit_code_x86_retval_{f,d} as | |
2469 | it is specific to 32 bit x86, and used to move abi return | |
2470 | value in x87 register to a sse register. | |
2471 | ||
2472 | 2013-01-05 Paulo Andrade <pcpa@gnu.org> | |
2473 | ||
2474 | * check/cccall.c, check/ccall.ok: New test case to validate | |
2475 | interleaved calls from/to C code and jit. | |
2476 | ||
2477 | * check/Makefile.am: Update for the new ccall test case. | |
2478 | ||
2479 | * include/lightning.h, lib/lightning.c: Add the new jit_address | |
2480 | call that returns the real/final address of a "note" in the | |
2481 | generated jit. It requires a jit_node_t as returned by the | |
2482 | jit_note call, and is only valid after calling jit_emit. | |
2483 | Add an intermediate solution to properly handle arm | |
2484 | soft and softfp modes that move a double to an integer register | |
2485 | pair. Currently it just adds extra tests for the condition, | |
2486 | but the proper solution should be to have extra lightning | |
2487 | codes for these conditions, codes which should be only used | |
2488 | by the backends that need it, and merged with the existing | |
2489 | jit_pusharg*_{f,d}. | |
2490 | ||
2491 | * include/lightning/jit_private.h: Add new jit_state_t flag | |
2492 | to know it finished jit_emit, so that calls to jit_address | |
2493 | are valid. | |
2494 | ||
2495 | * lib/jit_mips.c: Correct abi implementation so that the | |
2496 | new ccall test case pass. Major problem was using | |
2497 | _jit->function.self.arg{i,f} as boolean values, but that | |
2498 | would cause lightning.c:patch_registers() to incorrectly | |
2499 | assume only one register was used as argument when calling | |
2500 | jit_regarg_p(); _jit->function.self.arg{i,f} must be the | |
2501 | number of registers used as arguments (in all backends). | |
2502 | ||
2503 | * lib/jit_x86.c: Add workaround, by marking %rax as used, | |
2504 | to a special condition, when running out of registers and the | |
2505 | allocator trying to spill and reload %rax, but %rax was used | |
2506 | as a pointer to a function, what would cause the reload to | |
2507 | destroy the return value. This condition can be better | |
2508 | generalized, but the current solution is good enough. | |
2509 | ||
2510 | * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, lib/jit_ppc.c: | |
2511 | Rewrite logic to handle arguments, as the original code was | |
2512 | written based on a SysV pdf about the generic powerpc ABI, | |
2513 | what did "invent" a new abi for the previous test cases, but | |
2514 | failed in the new ccall test in Darwin PPC. Now it properly | |
2515 | handles 13 float registers for arguments, as well as proper | |
2516 | computation of stack offsets when running out of registers | |
2517 | for arguments. | |
2518 | ||
2519 | 2013-01-02 Paulo Andrade <pcpa@gnu.org> | |
2520 | ||
2521 | * check/float.tst: Correct test case to match ppc also | |
2522 | converting positive infinity to 0x7fffffff. | |
2523 | ||
2524 | * lib/jit_arm-swf.c: Correct typos with double underscores. | |
2525 | ||
2526 | * lib/lightning.c: Correct remaining wrong reverse jump logic. | |
2527 | ||
2528 | 2012-12-29 Paulo Andrade <pcpa@gnu.org> | |
2529 | ||
2530 | * lib/lightning.c: Correct both, wrong and confusing logic | |
2531 | to compute the reverse of a jump. Now it properly matches | |
2532 | C semantics for "eq" (==) and "ne" (!=) and correct computation | |
2533 | of reverse of "uneq" as "gt". | |
2534 | ||
2535 | * check/branch.tst: Update "ne" float branch check that | |
2536 | previously happened to be wrongly tested with a NaN argument. | |
2537 | ||
2538 | 2012-12-29 Paulo Andrade <pcpa@gnu.org> | |
2539 | ||
2540 | * check/float.ok, check/float.tst: New test cases implementing | |
2541 | extensive validation of float comparison and branch code | |
2542 | generation as well as integer conversion, involving NaN and | |
2543 | [+-]Inf. | |
2544 | ||
2545 | * lib/jit_arm-swf.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c: | |
2546 | Correct bugs found by new float test case. | |
2547 | ||
2548 | * lib/jit_x86.c: Correct cut&paste error added in commit to | |
2549 | convert jit_arg* return value to a jit_node_t*, that would | |
2550 | cause it to not properly handle double arguments in ix86. | |
2551 | ||
2552 | * check/Makefile.am: Update for the new test case. | |
2553 | ||
2554 | 2012-12-28 Paulo Andrade <pcpa@gnu.org> | |
2555 | ||
2556 | * check/lightning.c, include/lightning.h, lib/jit_arm.c, | |
2557 | lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_x86.c, | |
2558 | lib/lightning.c: Change return value of jit_arg{,_f,_d} to | |
2559 | a jit_node_t* object, that should be used as argument to | |
2560 | jit_getarg_{c,uc,s,us,i,ui,l,f,d}. This just requires changing | |
2561 | from jit_int32_t to jit_pointer_t (or jit_node_t*) the "handle" | |
2562 | for the getarg calls, with the benefit that it makes it easy | |
2563 | to implement patching of the stack address of non register | |
2564 | arguments, this way allowing to implement variable size stack | |
2565 | frames if applicable; useful if there are too many registers and | |
2566 | jit functions uses only a few callee save registers. | |
2567 | ||
2568 | 2012-12-27 Paulo Andrade <pcpa@gnu.org> | |
2569 | ||
2570 | * lib/jit_arm.c, lib/jit_mips-cpu.c, lib/jit_mips.c: Correct | |
2571 | regressions when patching jit_calli for a forward function. | |
2572 | ||
2573 | * lib/jit_ppc-cpu.c: Correct wrong arguments to ANDI opcode | |
2574 | in jit_getarg_u{c,s} implementation. | |
2575 | ||
2576 | 2012-12-23 Paulo Andrade <pcpa@gnu.org> | |
2577 | ||
2578 | * check/call.ok, check/call.tst: New test cases to validate | |
2579 | simple typed argument and return values in function calls. | |
2580 | ||
2581 | * check/lightning.c: Properly handle jit_movi of labels for | |
2582 | backward and forward code labels. | |
2583 | ||
2584 | * check/Makefile.am: Update for new test case. | |
2585 | ||
2586 | 2012-12-23 Paulo Andrade <pcpa@gnu.org> | |
2587 | ||
2588 | * check/carry.ok, check/carry.tst: New test case to validate | |
2589 | carry condition handling. | |
2590 | ||
2591 | * check/Makefile.am: Update for new test case. | |
2592 | ||
2593 | 2012-12-22 Paulo Andrade <pcpa@gnu.org> | |
2594 | ||
2595 | * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Implement logic for | |
2596 | jit_htonr for big endian, so that ppc (big endian) pass the | |
2597 | new clobber.tst test case. | |
2598 | ||
2599 | 2012-12-22 Paulo Andrade <pcpa@gnu.org> | |
2600 | ||
2601 | * lib/jit_arm.c: Correct use of wrong argument offset | |
2602 | variable in armv7l or float/double argument for varargs | |
2603 | function in armv7hl. | |
2604 | Correct jit_getarg* logic in software float mode to | |
2605 | match expected behavior in other backends, that is, if | |
2606 | a function is not called, it is safe to use a few lightning | |
2607 | calls before a next jit_getarg* call, as done in the test | |
2608 | case check/stack.tst. The proper solution should be to | |
2609 | extend the parser in lib/lightning.c to check if there is | |
2610 | some float operation that will call some (libgcc?) function, | |
2611 | but software float arm should be a very uncommon backend for | |
2612 | lightning, so, just load the already in place arguments | |
2613 | saved to stack, assuming the register argument was clobbered | |
2614 | (what should not be the case most times...). | |
2615 | ||
2616 | 2012-12-22 Paulo Andrade <pcpa@gnu.org> | |
2617 | ||
2618 | * check/clobber.ok, check/clobber.tst: New test case doing | |
2619 | extensive validation tests to ensure registers not used in | |
2620 | a operation are not clobbered. | |
2621 | ||
2622 | * check/Makefile.am: Update for new test case. | |
2623 | ||
2624 | 2012-12-21 Paulo Andrade <pcpa@gnu.org> | |
2625 | ||
2626 | * lib/lightning.c: Partially rewrite/revert code to compute | |
2627 | initial register live state at the start of a basic block. | |
2628 | The original logic was corrupted when adding optimizations | |
2629 | to do as few computations as possible in jit_update. The | |
2630 | reglive field must be always a known set of live registers | |
2631 | at the start of a basic block. The value that was incorrect | |
2632 | was the regmask field, that must be the set of registers | |
2633 | that are in unknown state, because they are not known live, | |
2634 | neither set (or possibly not set) in the basic block, and | |
2635 | *must* store the state at the start of the basic block. | |
2636 | ||
2637 | 2012-12-20 Paulo Andrade <pcpa@gnu.org> | |
2638 | ||
2639 | * include/lightning/jit_ppc.h: Correct mismatch of JIT_F{1,5} | |
2640 | with enum codes, that were correct, and returned by jit_f(). | |
2641 | ||
2642 | * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: Properly | |
2643 | implement and better describe values when generating stack | |
2644 | frames. | |
2645 | ||
2646 | 2012-12-18 Paulo Andrade <pcpa@gnu.org> | |
2647 | ||
2648 | * check/stack.ok, check/stack.tst: New files to test data | |
2649 | integrity on a deep chain of stack frames. | |
2650 | ||
2651 | * lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c, | |
2652 | lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c, | |
2653 | lib/jit_x86.c, lib/jit_x86-cpu.c: Calculate _jit->function->stack | |
2654 | in the emit stage, otherwise it will calculate it wrong if | |
2655 | need to jit_allocai space to spill registers. | |
2656 | ||
2657 | * lib/lightning.c: Correct wrong offset when updating the | |
2658 | "current" jit function pointer in the code that may need to | |
2659 | allocate stack space to spill registers. | |
2660 | ||
2661 | * check/lightning.c: Correct off by one data space check. | |
2662 | ||
2663 | * check/Makefile.am: Update for new test case. | |
2664 | ||
2665 | 2012-12-17 Paulo Andrade <pcpa@gnu.org> | |
2666 | ||
2667 | * check/fop_abs.ok, check/fop_abs.tst, check/fop_sqrt.ok, | |
2668 | check/fop_sqrt.tst: New files implementing simple test cases | |
2669 | for the extra float operations. | |
2670 | ||
2671 | * check/Makefile.am: Update for new test cases. | |
2672 | ||
2673 | * check/alu.inc: Add an extra macro to check for unordered | |
2674 | equality on tests where it is expected to use NaN as an | |
2675 | argument. | |
2676 | ||
2677 | * check/lightning.c: Minor change for proper/common argument | |
2678 | syntax handling ommiting arguments to options. | |
2679 | ||
2680 | 2012-12-17 Paulo Andrade <pcpa@gnu.org> | |
2681 | ||
2682 | * check/Makefile.am: Automatically generate pattern list | |
2683 | of tests with alternate jit generation options. This should | |
2684 | prevent typos and needing to change multiple places after | |
2685 | a change. | |
2686 | ||
2687 | 2012-12-14 Paulo Andrade <pcpa@gnu.org> | |
2688 | ||
2689 | * check/lightning.c: Remove the ".cpu name value" syntax, | |
2690 | as it was not able to do proper changes before the jit | |
2691 | internal data structure was initialized. Now it supports | |
2692 | several getopt options to force using different jit | |
2693 | generation options, effectively replacing the previous | |
2694 | syntax. | |
2695 | ||
2696 | * check/run-test: Add simple extra logic to handle differently | |
2697 | named test scripts, used to test things like x87 coprocessor | |
2698 | in ix86, and arm instruction set or software float in armv7l. | |
2699 | ||
2700 | * configure.ac: Add some AC_RUN_IFELSE calls to figure at | |
2701 | compile time if can test different code generation options, | |
2702 | and update Makefile generation accordingly. | |
2703 | ||
2704 | * check/Makefile.am, lib/jit_arm.c, lib/jit_x86.c: Update to | |
2705 | properly work with the test tool updating the jit_cpu global | |
2706 | information. | |
2707 | ||
2708 | * check/check.arm.sh, check/check.swf.sh, check/check.x87.sh: | |
2709 | New wrapper files passing -mthumb=0, mvfp=0 and -mx87=1 to | |
2710 | the test tool, if applicable, so that it can validate alternate | |
2711 | code generation options on test hosts that support them. | |
2712 | ||
2713 | 2012-12-14 Paulo Andrade <pcpa@gnu.org> | |
2714 | ||
2715 | * lib/jit_x86-x87.c, lib/jit_x86.c: Correct test cases in ix86 | |
2716 | when using the x87 coprocessor instead of sse2+. | |
2717 | ||
2718 | 2012-12-14 Paulo Andrade <pcpa@gnu.org> | |
2719 | ||
2720 | * include/lightning.h, include/lightning/jit_private.h, | |
2721 | lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c, | |
2722 | lib/lightning.c: Make jit_ellipsis implementation not | |
2723 | backend specific. It is not intended to handle va_list | |
2724 | like objects at runtime, as jit_arg* and jit_getarg* | |
2725 | return constant values resolved at parse time, so, effectively | |
2726 | it is not possible to create printf like jit functions, as | |
2727 | there is no va_start, va_arg, va_end, etc, abstraction. This | |
2728 | limitation should be kept for the sake of making new ports | |
2729 | easier. | |
2730 | ||
2731 | 2012-12-14 Paulo Andrade <pcpa@gnu.org> | |
2732 | ||
2733 | * include/lightning.h, lib/lightning.c: Add two extra wrapper | |
2734 | functions to avoid need for excess pointer to/from word casts. | |
2735 | ||
2736 | * check/lightning.c: Only need for pointer to/from word cast | |
2737 | now is jit_movi, update accordingly. | |
2738 | ||
2739 | 2012-12-13 Paulo Andrade <pcpa@gnu.org> | |
2740 | ||
2741 | * check/varargs.ok, check/varargs.tst: New test cases implementing | |
2742 | simple varargs calls with a large amount of arguments to exercise | |
2743 | excess arguments on stack. | |
2744 | ||
2745 | * include/lightning.h: Include config.h if HAVE_CONFIG_H is | |
2746 | defined. | |
2747 | ||
2748 | * lib/jit_arm.c: Allocate a fpr register, not a gpr one for | |
2749 | temporary when pushing varargs arguments in the stack. | |
2750 | ||
2751 | * lib/jit_arm-swf.c: Correct code changing the wrong offset | |
2752 | in jit_absr_d and jit_negr_d in software float. | |
2753 | ||
2754 | * lib/jit_mips.c: Correct calculation of offsets of arguments | |
2755 | on stack. | |
2756 | ||
2757 | * lib/jit_ppc.c: Correct bogus logic for "next" offset of arguments | |
2758 | on stack and adjust for fixed offset of stack arguments. | |
2759 | ||
2760 | 2012-12-12 Paulo Andrade <pcpa@gnu.org> | |
2761 | ||
2762 | * include/lightning.h, lib/jit_arm.c, lib/jit_mips.c, | |
2763 | lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare | |
2764 | to no longer receive an argument. If receiving an argument, it | |
2765 | should be an ABI specifier, not a boolean if varargs or not, | |
2766 | and add the new jit_ellipsis call, to specify where the | |
2767 | ellipsis is in the C prototype of the function being called. | |
2768 | Note that currently it is not supported to define varargs | |
2769 | functions and it will be ignored if calling jit_ellipsis not | |
2770 | in a prepare/finish* block, but this should be addressed. | |
2771 | ||
2772 | * check/allocai.tst, check/alu_add.tst, check/alu_and.tst, | |
2773 | check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst, | |
2774 | check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst, | |
2775 | check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst, | |
2776 | check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst, | |
2777 | check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst, | |
2778 | check/fib.tst, check/ldsti.tst, check/ldstr-c.tst, | |
2779 | check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst, | |
2780 | check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst, | |
2781 | check/lightning.c: Update for the change to jit_prepare and | |
2782 | addition of jit_ellipsis. | |
2783 | ||
2784 | 2012-12-11 Paulo Andrade <pcpa@gnu.org> | |
2785 | ||
2786 | * lib/jit_ppc-cpu.c: Make movr a function that checks arguments | |
2787 | so that other code can safely assume it is a noop if src and dst | |
2788 | are the same register. | |
2789 | Implement rem{r,i}{,_u} as a div{,u}/mul/sub. | |
2790 | Correct ANDIS, ORIS and XORIS calls to cast the argument to | |
2791 | unsigned before the shift to avoid an assertion if the argument | |
2792 | had the topmost bit set. | |
2793 | Implement lshi, rshi and rshi_u as functions to test for a | |
2794 | zero argument, that would otherwise trigger an assertion when | |
2795 | computing the shift value. | |
2796 | Do a simple implementation of bm{s,c}{r,i} with a temporary, | |
2797 | "andr" of arguments and jump based on comparison with zero. | |
2798 | Correct typo in ldxi_c. | |
2799 | ||
2800 | * lib/jit_ppc-fpu.c: Correct wrong arguments to FDIV* and STF*. | |
2801 | ||
2802 | * lib/jit_ppc.c: Correct wrong check for 6 instead of 8 integer | |
2803 | arguments in registers. If calling a varargs function and | |
2804 | passing a float or double argument, also either store the | |
2805 | value in the stack or in integer registers, as varargs functions | |
2806 | do not fetch it from float registers. | |
2807 | Add "case" for new functions and incorrectly missing ones. | |
2808 | Call libgcc's __clear_cache, that should know what to do | |
2809 | if the hardware needs flushing cache before execution. | |
2810 | ||
2811 | * lib/lightning.c: Do a simple/trivial logic in jit_regset_scan1, | |
2812 | that should make it easier for the compiler to optimize it, and | |
2813 | that also corrects the previously wrong code for big endian, and | |
2814 | that was causing problems in ppc due to not saving all callee save | |
2815 | registers as it was not "finding" them in the regset due to the | |
2816 | little endian assumption bug. | |
2817 | ||
2818 | 2012-12-11 Paulo Andrade <pcpa@gnu.org> | |
2819 | ||
2820 | * configure.ac: Only default to using the builtin disassembler | |
2821 | if on GNU/Linux. This should be temporary, due to requiring | |
2822 | /proc/self/exe. | |
2823 | Correctly check $target_cpu for powerpc. | |
2824 | ||
2825 | * include/lightning/jit_ppc.h: Correctly implement jit_v_num. | |
2826 | ||
2827 | * include/lightning/jit_private.h: Declare proper prototype | |
2828 | for jit_init_debug and jit_finish_debug. | |
2829 | ||
2830 | * lib/jit_ppc-cpu.c: Remove code to save/restore callee save | |
2831 | float registers, as it is not required since those float | |
2832 | registers are not usable currently. | |
2833 | Change prolog and epilog generation to, at least comparing | |
2834 | code, match what gcc generates in "gcc -O0", but it is still | |
2835 | failing in Darwin PPC, apparently due to the __clear_cache | |
2836 | call not being enough, as frequently it will also fail to | |
2837 | execute, and the code buffer is all zeroes. | |
2838 | ||
2839 | * lib/lightning.c: Do not fail in jit_regset_scan1 calls due | |
2840 | to passing 64 as argument on computers with 64 registers. | |
2841 | ||
2842 | 2012-12-10 Paulo Andrade <pcpa@gnu.org> | |
2843 | ||
2844 | * lib/jit_mips-cpu.c: Correct all current test cases. | |
2845 | Call the "xori" not the "XORI" macro for jit_xori implementation, | |
2846 | as the XORI macro handles only 16 bit unsigned values. | |
2847 | Call the "movr" macro, not the "movi" macro in the special | |
2848 | case of adding or subtracting zero. | |
2849 | Use the proper temporary register in the jit_andr implementation. | |
2850 | ||
2851 | 2012-12-09 Paulo Andrade <pcpa@gnu.org> | |
2852 | ||
2853 | * check/alu.inc, check/alu_add.ok, check/alu_add.tst, | |
2854 | check/alu_and.ok, check/alu_and.tst, check/alu_com.ok, | |
2855 | check/alu_com.tst, check/alu_div.ok, check/alu_div.tst, | |
2856 | check/alu_lsh.ok, check/alu_lsh.tst, check/alu_mul.ok, | |
2857 | check/alu_mul.tst, check/alu_neg.ok, check/alu_neg.tst, | |
2858 | check/alu_or.ok, check/alu_or.tst, check/alu_rem.ok, | |
2859 | check/alu_rem.tst, check/alu_rsh.ok, check/alu_rsh.tst, | |
2860 | check/alu_sub.ok, check/alu_sub.tst, check/alu_xor.ok, | |
2861 | check/alu_xor.tst, check/alux_add.ok, check/alux_add.tst, | |
2862 | check/alux_sub.ok, check/alux_sub.tst, check/branch.ok, | |
2863 | check/branch.tst: New test cases for arithmetic and branch | |
2864 | tests. | |
2865 | ||
2866 | * check/Makefile.am: Update for new test cases. | |
2867 | ||
2868 | * include/lightning/jit_private.h: Make the jit_reg_free_p | |
2869 | macro shared by all backends. Previously was added for the | |
2870 | arm backend, but is useful in the x86_64 backend when checking | |
2871 | state of "special purpose register". | |
2872 | Also add the new jit_class_named register class, that must be | |
2873 | or'ed with the register value if calling jit_get_reg expecting | |
2874 | an specific value, because the specific register value may be | |
2875 | zero, that previously was treated as no register requested. | |
2876 | ||
2877 | * lib/jit_arm-cpu.c: Correct argument order for T2_MVN. | |
2878 | ||
2879 | * lib/jit_arm-swf.c: Call the proper function for double | |
2880 | divide. The "software float" implementation just calls | |
2881 | libgcc functions. | |
2882 | ||
2883 | * lib/jit_arm.c: Return float/double values in the float | |
2884 | register if using the hard float ABI. | |
2885 | ||
2886 | * lib/jit_x86-cpu.c: Change the can_sign_extend_int_p macro | |
2887 | to not include -0x80000000L, because there is code that | |
2888 | "abuses" it and thinks it can negate the immediate value | |
2889 | after calling that macro. | |
2890 | Correct implementation of jit_subi that had a wrong code | |
2891 | patch logic doing subtraction with reversed arguments. | |
2892 | Correct REX prefix calculation in the jit_muli implementation. | |
2893 | Correct logic to get/unget %*ax and %*dx registers in divremr | |
2894 | and divremi. | |
2895 | Correct divremi that was using the symbolic, unique %*ax | |
2896 | value in on place (not using the _REGNO name suffix). | |
2897 | Correct cut&paste error causing it to use "xor" instead of | |
2898 | "or" in one code path of the jit_ori implementation. | |
2899 | Correct several flaws when clobbering registers and/or when | |
2900 | one of the arguments was %*cx in the rotshr wrapper function | |
2901 | implementing most shift operations. | |
2902 | ||
2903 | * lib/lightning.c: No longer expect that the backend be smart | |
2904 | enough to know what to do when asking for a named register | |
2905 | if that register is already an argument or is live. It fails | |
2906 | if it is an argument, or if register is live, fails if cannot | |
2907 | spill. | |
2908 | No longer incorrectly assume that eqr_{f,d} and ltgr_{f,d} are | |
2909 | safe to inverse value tests in jump thread optimization. | |
2910 | ||
2911 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2912 | ||
2913 | * check/Makefile.am, check/cvt.ok, check/cvt.tst: Add new | |
2914 | "cvt" test case to test conversion from/to int/float types. | |
2915 | ||
2916 | * check/lightning.c: Only define truncr_{f,d}_l in 64 bit mode. | |
2917 | ||
2918 | * include/lightning.h: Correct typo that caused it to define | |
2919 | jit_truncr_{f,d}_l in 32 bit mode. | |
2920 | ||
2921 | * lib/jit_arm-cpu.c: Avoid assertion failure in the signed/unsigned | |
2922 | extend opcodes generation as it shares an interface for 3 argument | |
2923 | opcode generation. | |
2924 | ||
2925 | * lib/jit_x86-cpu.c: Correct wrong argument passed to | |
2926 | jit_unget_reg in the andi implementation and wrong byte | |
2927 | unsigned extend code generation. | |
2928 | ||
2929 | * lib/jit_x86-sse.c: Correct conversion from "word" to float or | |
2930 | double as is dependent on wordsize. | |
2931 | ||
2932 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2933 | ||
2934 | * check/ldstr-c.ok, check/ldstr-c.tst, check/ldstxi-c.ok, | |
2935 | check/ldstxi-c.tst, check/ldstxr-c.ok, check/ldstxr-c.tst: | |
2936 | New test case files testing load clobbering the base and/or | |
2937 | index register; | |
2938 | ||
2939 | * check/ldst.inc: New file with common definition for all the | |
2940 | ldst* test cases. | |
2941 | ||
2942 | check/Makefile.am, check/ldsti.tst, check/ldstr.tst, | |
2943 | check/ldstxi.tst, check/ldstxr.tst: Update for new common | |
2944 | definitions file and new register clobber ldst tests. | |
2945 | ||
2946 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2947 | ||
2948 | * lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d} | |
2949 | in the mips backend. | |
2950 | ||
2951 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2952 | ||
2953 | * lib/jit_arm-vfp.c: Correct regression found in armv7l with | |
2954 | latest test cases. | |
2955 | ||
2956 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2957 | ||
2958 | * check/ldstxi.tst, check/ldstxr.tst: Correct wrong argument | |
2959 | order for 32 bit mode tests. | |
2960 | ||
2961 | * configure.ac: Correct check for ix86 target_cpu. | |
2962 | ||
2963 | 2012-12-05 Paulo Andrade <pcpa@gnu.org> | |
2964 | ||
2965 | * check/ldstr.ok, check/ldstr.tst, check/ldsti.ok, | |
2966 | check/ldsti.tst, check/ldstxr.ok, check/ldstxr.tst, | |
2967 | check/ldstxi.ok, check/ldstxi.tst: | |
2968 | New test case files exercising a very large amount of | |
2969 | register combinations to verify load/store implementation. | |
2970 | ||
2971 | * check/Makefile.am: Update for new test cases. | |
2972 | ||
2973 | * lib/jit_x86-cpu.c: Correct wrong argument order when | |
2974 | computing REX prefix for {ld,st}r_T codes; | |
2975 | ||
2976 | 2012-12-04 Paulo Andrade <pcpa@gnu.org> | |
2977 | ||
2978 | * lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips | |
2979 | jit_sqrtr_{f,d} codes. | |
2980 | ||
2981 | * check/all.tst, include/lightning.h, lib/jit_print.c: Change | |
2982 | declaration order and call order in all.tst of {add,sub}c and | |
2983 | {add,sub}x. *c must be called before to set the carry and *x | |
2984 | second to use the carry and keep it set. The wrong call order | |
2985 | was causing all.tst to fail in mips, where a register is | |
2986 | allocated to keep a global carry state. | |
2987 | ||
2988 | 2012-12-04 Paulo Andrade <pcpa@gnu.org> | |
2989 | ||
2990 | * include/lightning/jit_mips.h, lib/jit_mips-cpu.c, | |
2991 | lib/jit_mips-fpu.c, lib/jit_mips.c: Correct float/double | |
2992 | argument handling and make the mips backend pass the initial | |
2993 | test cases. | |
2994 | ||
2995 | * include/lightning.h, ib/jit_print.c, lib/lightning.c: | |
2996 | Add extra enum values for argument handling functions that | |
2997 | could not be abstracted to the current codes, that is, when | |
2998 | float values need to move from/to gpr from/to fpr. It would | |
2999 | be more tempting to add such primitives, but they would have | |
3000 | wordsize limitations, and it is not expected to add codes | |
3001 | with one gpr argument for 64 bit and two for 32 bit. | |
3002 | ||
3003 | * lib/jit_ppc.c: Check _jit->function before calling jit_epilog() | |
3004 | to avoid a runtime exception. | |
3005 | ||
3006 | 2012-12-04 Paulo Andrade <pcpa@gnu.org> | |
3007 | ||
3008 | * include/lightning/jit_mips.h, lib/jit_mips.c: Update to | |
3009 | make the mips backend compile in a qemu image. | |
3010 | ||
3011 | * lib/jit_ppc.c: Minor adaptations to help in having the | |
3012 | ppc backend compilable. | |
3013 | ||
3014 | 2012-12-03 Paulo Andrade <pcpa@gnu.org> | |
3015 | ||
3016 | * configure.ac, include/lightning/jit_private.h, lib/jit_arm-cpu.c, | |
3017 | lib/jit_arm-swf.c, lib/jit_arm.c, check/Makefile.am: Correct | |
3018 | implementation of the arm backend port to build and pass the | |
3019 | current test cases. Tested on armv7 with softfp abi. | |
3020 | ||
3021 | * lib/jit_disasm.c: Rename and change prototype of static | |
3022 | disassemble function as in the arm backend it is required | |
3023 | to access state information stored in the jit_state_t object. | |
3024 | ||
3025 | * check/3to2.tst, check/add.tst: Correct test case code assuming | |
3026 | JIT_RO and JIT_RET are the same, and even if they are the same, | |
3027 | the logic was incorrect because it must always call jit_retval* | |
3028 | to fetch a function call return before any other instruction. | |
3029 | The arm backend hash a special condition if jit_retval is not | |
3030 | called, because "r0" is not JIT_R0, but is JIT_RET and *also* | |
3031 | the first argument for a called function, so JIT_RET must be | |
3032 | only used as an argument to jit_retval. | |
3033 | ||
3034 | 2012-12-03 Paulo Andrade <pcpa@gnu.org> | |
3035 | ||
3036 | * check/all.tst, check/lightning.c: Only declare or use 64 bit | |
3037 | interfaces on 64 bit builds. | |
3038 | ||
3039 | * check/fib.tst: Use simpler logic to not need preprocessor | |
3040 | conditionals for 32 or 64 bit. | |
3041 | ||
3042 | * include/lightning.h: Only declare 64 bit macros on a 64 bit | |
3043 | build. Code using lightning must know about wordsize and the | |
3044 | jit generation limitations, also, this way it generates a | |
3045 | compile time failure, not a runtime assertion. | |
3046 | ||
3047 | * include/lightning/jit_x86.h: Correct typo in macro name. | |
3048 | ||
3049 | * lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c, | |
519a9ea1 | 3050 | lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c, |
4a71579b PC |
3051 | lib/jit_x86.c, lib/jit_x86-cpu.c: Correct wrong code to get |
3052 | current jit function pointer. | |
3053 | ||
3054 | * lib/lightning.c: Move call to the simplify() optimization | |
3055 | to after register liveness is known. Previous code did work | |
3056 | by accident but now with proper test cases the problem was | |
3057 | noticed. | |
3058 | ||
3059 | * lib/jit_disasm.c: Always cast bfd_vma to long long when | |
3060 | passing it as printf argument. | |
3061 | ||
3062 | 2012-12-03 Paulo Andrade <pcpa@gnu.org> | |
3063 | ||
3064 | * configure.ac, check/Makefile.am, check/check.sh, | |
3065 | doc/Makefile.am, include/lightning/Makefile.am, | |
3066 | lib/Makefile.am: Correct make distcheck. | |
3067 | ||
3068 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3069 | ||
3070 | * lib/jit_ppc.c: Assign copyright ownership to FSF. | |
3071 | ||
3072 | * lib/jit_x86-cpu.c: Correct integer multiplication that was | |
3073 | generating code with reversed register arguments. | |
3074 | ||
3075 | * check/rpn.ok, check/rpn.tst: New test case file. | |
3076 | ||
3077 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3078 | ||
3079 | * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c: | |
3080 | Actually change copyright owner to FSF as avertised. | |
3081 | ||
3082 | * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, | |
3083 | lib/jit_arm-vfp.c, lib/jit_arm.c, | |
3084 | lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c, | |
3085 | lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: New | |
3086 | files implementing initial code different jit backends. | |
3087 | ||
3088 | * include/lightning/jit_private.h: Add extra field to the | |
3089 | private jit_patch_t type, required by the arm port. | |
3090 | ||
3091 | * lib/Makefile.am: Update for the new backend implementation | |
3092 | files. | |
3093 | ||
3094 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3095 | ||
3096 | * check/Makefile.am: Add proper "make clean" rule and missing | |
3097 | check.sh to EXTRA_DIST. | |
3098 | ||
3099 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3100 | ||
3101 | * .gitignore: Update pattern of ignored files. | |
3102 | ||
3103 | * check/Makefile.am: Add rule to build liblightning.la dependency | |
3104 | in case of running "make check" before building the library. | |
3105 | ||
3106 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3107 | ||
3108 | * lightning/Makefile.am, lightning/asm-common.h, | |
3109 | lightning/core-common.h, lightning/fp-common.h, | |
3110 | lightning/funcs-common.h, lightning/i386/Makefile.frag, | |
3111 | lightning/i386/asm-32.h, lightning/i386/asm-64.h, | |
3112 | lightning/i386/asm.h, lightning/i386/core-32.h, | |
3113 | lightning/i386/core-64.h, lightning/i386/core.h, | |
3114 | lightning/i386/fp-32.h, lightning/i386/fp-64.h, | |
3115 | lightning/i386/fp.h, lightning/i386/funcs.h, | |
3116 | lightning/ppc/asm.h, lightning/ppc/core.h, | |
3117 | lightning/ppc/fp.h, lightning/ppc/funcs.h, | |
3118 | lightning/sparc/asm.h, lightning/sparc/core.h, | |
3119 | lightning/sparc/fp.h, lightning/sparc/funcs.h: | |
3120 | Removed. The core logic is used in the new code, and new mips | |
3121 | and arm ports will be added. At first, sparc will not be | |
3122 | supported as it has not yet been ported to the new engine. | |
3123 | ||
3124 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3125 | ||
3126 | * tests/Makefile.am, tests/3to2.c, tests/3to2.ok, tests/add.c, | |
3127 | tests/add.ok, tests/allocai.c, tests/allocai.ok, tests/bp.c, | |
3128 | tests/bp.ok, tests/divi.c, tests/divi.ok, tests/fib.c, tests/fib.ok, | |
3129 | tests/fibdelay.c, tests/fibdelay.ok, tests/fibit.c, tests/fibit.ok, | |
3130 | tests/funcfp.c, tests/funcfp.ok, tests/incr.c, tests/incr.ok, | |
3131 | tests/ldst.c, tests/ldst.ok, tests/ldxi.c, tests/ldxi.ok, | |
3132 | tests/modi.c, tests/modi.ok, tests/movi.c, tests/movi.ok, | |
3133 | tests/printf.c, tests/printf.ok, tests/printf2.c, tests/printf2.ok, | |
3134 | tests/ret.c, tests/ret.ok, tests/rpn.c, tests/rpn.ok, tests/rpnfp.c, | |
3135 | tests/rpnfp.ok, tests/sete.c, tests/sete.ok, tests/testfp.c, | |
3136 | tests/testfp.ok, tests-run-test: Removed previous test suite, in | |
3137 | favor of a newer one in the check subdirectory. | |
3138 | ||
3139 | * check/3to2.ok, check/3to2.tst, check/add.ok, check/add.tst, | |
3140 | check/allocai.ok, check/allocai.tst, check/bp.ok, check/bp.tst, | |
3141 | check/divi.ok, check/divi.tst, check/fib.ok, check/fib.tst: | |
3142 | New sample input for the new test program, loosely matching | |
3143 | several of the previous test cases. | |
3144 | ||
3145 | * check/Makefile.am: New test suite makefile. | |
3146 | ||
3147 | * check/check.sh, check/run-test: New wrapper files for the | |
3148 | new test suite. | |
3149 | ||
3150 | * check/lightning.c: New file. The main driver of the new test | |
3151 | suite, that compiles to a parser of a very simple assembly like | |
3152 | language, generates jit and executes it. | |
3153 | ||
3154 | * check/all.tst: New file. A generic debug and sample test file | |
3155 | with a directive to prevent it from being executed, and useful to | |
3156 | read disassembly of all possible instructions, using a fixed set | |
3157 | of registers. | |
3158 | ||
3159 | * include/Makefile.am, include/lightning.h, | |
3160 | include/lightning/Makefile.am, include/lightning/jit_arm.h, | |
3161 | include/lightning/jit_mips.h, include/lightning/jit_ppc.h, | |
3162 | include/lightning/jit_private.h, include/lightning/jit_x86.h, | |
3163 | lib/Makefile.am, lib/jit_disasm.c, lib/jit_print.c, | |
3164 | lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c, | |
3165 | lib/jit_x86.c, lib/lightning.c: New files. These files are | |
3166 | written from scratch, only by <pcpa@gnu.org>, and have now | |
3167 | copyright assignment to the FSF. This is the core of the new | |
3168 | lightning rework. Previously it was integrated in code with | |
3169 | a garbage collector and several custom types like vectors and | |
3170 | hash tables, so this first code merge with lightning converts | |
3171 | that code into a library extracting only the jit bits, and at | |
3172 | first only for x86_64 GNU/Linux. | |
3173 | ||
3174 | * lightning.h, m4/lightning.m4: Removed. These are no longer | |
3175 | required in the new lightning code. | |
3176 | ||
3177 | .gitignore, Makefile.am, configure.ac: Update for the new | |
3178 | lightning code. | |
3179 | ||
3180 | 2012-12-02 Paulo Andrade <pcpa@gnu.org> | |
3181 | * .cvsignore: Removed for extra cleanup. | |
3182 | ||
3183 | * build-aux: Rename directory to m4. | |
3184 | ||
3185 | * m4: Renamed to "default" name and for consistency with merge | |
3186 | with code rework to be imported in lightning. | |
3187 | ||
3188 | * .gitignore, configure.ac, Makefile.am, doc/Makefile.am: | |
3189 | Update for build-aux to m4 rename. | |
3190 | ||
3191 | 2012-12-01 Paulo Andrade <pcpa@gnu.org> | |
3192 | ||
3193 | * opcode/Makefile.am, opcode/Makefile.in, opcode/ansidecl.h, | |
3194 | opcode/bfd.h, opcode/dis-asm.h, opcode/dis-buf.c, opcode/disass.c, | |
3195 | opcode/i386-dis.c, opcode/i386.h, opcode/ppc-dis.c, opcode/ppc-opc.c, | |
3196 | opcode/ppc.h, opcode/sparc-dis.c, opcode/sparc-opc.c, opcode/sparc.h, | |
3197 | opcode/sysdep.h: Removed. Do not bundle GNU binutils files. | |
3198 | ||
3199 | * aclocal.m4, configure, Makefile.in, config.h.in, doc/Makefile.in, | |
3200 | lightning/Makefile.in, tests/Makefile.in: Removed. Do not maintain | |
3201 | autogenerated files that also generate too much diff noise when | |
3202 | regenerated in git. | |
3203 | ||
3204 | * build-aux/help2man, build-aux/texinfo.tex, build-aux/texi2dvi: | |
3205 | Removed. Buildenvironment must have an up to date version from | |
3206 | upstream installed. | |
3207 | ||
3208 | * build-aux/config.guess, build-aux/config.sub, build-aux/depcomp, | |
3209 | build-aux/install-sh build-aux/mdate-sh build-aux/missing: Removed. | |
3210 | Do not maintain a copy of automake files in git. Release tarballs | |
3211 | must use an up to date version. | |
3212 | ||
3213 | * lightningize.in, doc/lightningize.1: Removed. Do not encourage | |
3214 | bundling lightning in other packages. It should use a system package | |
3215 | or a proper thirdy part subdirectory. | |
3216 | ||
3217 | * INSTALL: Removed. Autoreconf removes it and creates a symlink | |
3218 | when regenerating files, so, avoid conflicts in git and let | |
3219 | automake create the symlink. | |
3220 | ||
3221 | * .gitignore: Add INSTALL and autogenerated files. | |
3222 | ||
3223 | * configure.ac, Makefile.am: Update for removal of opcode subdir, | |
3224 | auto generated files and lightningize. | |
3225 | ||
3226 | * tests/Makefile.am, tests/3to2.c, tests/add.c, tests/bp.c, | |
3227 | tests/fib.c, tests/fibdelay.c, tests/fibit.c, tests/funcfp.c, | |
3228 | tests/incr.c, tests/printf.c, tests/rpn.c, tests/rpnfp.c, | |
3229 | tests/sete.c, tests/testfp.c: Update for removal of opcode subdir. | |
3230 | ||
3231 | * doc/Makefile.am: Update for removal of lightningize. | |
3232 | ||
3233 | * configure.ac, lightning/ppc/funcs.h, lightning/sparc/funcs.h, | |
3234 | lightning/i386/fp.h, lightning/i386/core.h, lightning/i386/asm.h, | |
3235 | tests/3to2.c, tests/add.c, tests/bp.c, tests/fib.c, tests/fibdelay.c, | |
3236 | tests/fibit.c, tests/funcfp.c, tests/incr.c, tests/printf.c, | |
3237 | tests/rpn.c, tests/rpnfp.c, tests/sete.c, tests/testfp.c: | |
3238 | Remove LIGHTNING_CROSS, it is half supported and incomplete. | |
3239 | ||
3240 | * tests/3to2.c, tests/funcfp.c, tests/rpnfp.c: Remove preprocessor | |
3241 | check on JIT_FPR. If no hardware registers are available, the backend | |
3242 | must provide an alternative for software float. | |
3243 | ||
3244 | * lightning/ppc/core.h, lightning/sparc/core.h, tests/Makefile.am: | |
3245 | Remove JIT_NEED_PUSH_POP. It is absolutely not trivial to implement | |
3246 | properly on some backends due to stack alignment constraints, and | |
3247 | whenever it is required, using jit_allocai and using a properly | |
3248 | aligned stack vector, or a heap buffer, is better. | |
3249 | ||
3250 | * tests/push-pop.c, tests/push-pop.ok: Removed due to | |
3251 | JIT_NEED_PUSH_POP no longer available. | |
3252 | ||
3253 | 2011-02-28 Paolo Bonzini <bonzini@gnu.org> | |
3254 | ||
3255 | * lightning/i386/core-64.h: Add jit_add{c,x}{i,r}_l, jit_mulr_{l,ul}_, | |
3256 | fix jit_mul{i,r}_{l,ul}. | |
3257 | ||
3258 | 2010-08-20 Paolo Bonzini <bonzini@gnu.org> | |
3259 | ||
3260 | * lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}. | |
3261 | Reported by Paulo César Pereira de Andrade. | |
3262 | * lightning/ppc/fp.h: Likewise. | |
3263 | * lightning/sparc/fp.h: Implement FP branches. | |
3264 | ||
3265 | 2010-08-18 Paolo Bonzini <bonzini@gnu.org> | |
3266 | ||
3267 | * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}. | |
3268 | ||
3269 | 2010-08-18 Paolo Bonzini <bonzini@gnu.org> | |
3270 | ||
3271 | * lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation. | |
3272 | Reported by Paulo César Pereira de Andrade. | |
3273 | ||
3274 | 2010-08-15 Paolo Bonzini <bonzini@gnu.org> | |
3275 | ||
3276 | * tests/ldst.c: Update. | |
3277 | * tests/Makefile.am: Use -ffloat-store to compile it. | |
3278 | ||
3279 | 2010-08-15 Paolo Bonzini <bonzini@gnu.org> | |
3280 | ||
3281 | * lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s, | |
3282 | jit_ldxr_s): Move... | |
3283 | * lightning/i386/core-32.h: ... here. | |
519a9ea1 | 3284 | * lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s): |
4a71579b PC |
3285 | Use movsbq and movswq. |
3286 | ||
3287 | 2010-08-10 Paulo César Pereira de Andrade <pcpa@mandriva.com.br> | |
3288 | ||
3289 | * lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir. | |
3290 | (jit_movbrm): Check index register as well. | |
3291 | * lightning/i386/fp-64.h: Add jit_extr_f_d and jit_extr_d_f. | |
3292 | * lightning/fp-common.h: Add jit_extr_f_d and jit_extr_d_f. | |
3293 | ||
3294 | 2010-07-28 Paolo Bonzini <bonzini@gnu.org> | |
3295 | ||
3296 | * tests/Makefile.am: Add ldst test. | |
3297 | * tests/Makefile.in: Regenerate. | |
3298 | * tests/ldst.c: New. | |
3299 | * tests/ldst.ok: New. | |
3300 | ||
3301 | 2010-07-28 Paolo Bonzini <bonzini@gnu.org> | |
3302 | ||
3303 | * THANKS: Add Paulo Cesar Pereira de Andrade. | |
3304 | * doc/porting.texi: Fix ordering of arguments in jit_stxi. | |
3305 | * lightning/i386/core-32.h (jit_replace): Remove cmp argument. | |
3306 | * lightning/i386/fp-64.h (jit_movi_f): Fix. | |
3307 | ||
3308 | 2010-07-26 Paolo Bonzini <bonzini@gnu.org> | |
3309 | ||
3310 | * lightning/i386/core-32.h (jit_replace): Move here (removed | |
3311 | 2009-03-01). | |
3312 | ||
3313 | 2010-07-19 Paolo Bonzini <bonzini@gnu.org> | |
3314 | ||
3315 | * build-aux/lightning.m4: Always set and replace lightning_frag. | |
3316 | * Makefile.in: Regenerate. | |
3317 | * aclocal.m4: Regenerate. | |
3318 | * config.h.in: Regenerate. | |
3319 | * configure: Regenerate. | |
3320 | * doc/Makefile.in: Regenerate. | |
3321 | * doc/lightningize.1: Regenerate. | |
3322 | * doc/version.texi: Regenerate. | |
3323 | * lightning/Makefile.in: Regenerate. | |
3324 | * opcode/Makefile.in: Regenerate. | |
3325 | * tests/Makefile.in: Regenerate. | |
3326 | ||
3327 | 2009-03-01 Paolo Bonzini <bonzini@gnu.org> | |
3328 | ||
3329 | * lightning/i386/core-64.h: Use Mike's macros for x86-64 too. | |
3330 | * lightning/i386/core.h: Remove jit_replace. | |
3331 | ||
3332 | 2009-02-27 Mike Spivey <mike@comlab.ox.ac.uk> | |
3333 | ||
3334 | * lightning/i386/core.h: Rewrite shift-handling macros. | |
3335 | * lightning/fp-common.h: Fix jit_extr_{f_d,d_f}. | |
3336 | ||
3337 | 2009-02-17 Mike Spivey <mike@comlab.ox.ac.uk> | |
3338 | ||
3339 | * lightning/i386/core.h: Fix blunder in operand order. | |
3340 | ||
3341 | 2009-02-17 Paolo Bonzini <bonzini@gnu.org> | |
3342 | ||
3343 | * lightning/i386/fp-32.h: Another fix to jit_fp_btest. | |
3344 | ||
3345 | 2009-02-17 Paolo Bonzini <bonzini@gnu.org> | |
3346 | ||
3347 | * lightning/fp-common.h: Define double branches if missing. | |
3348 | * lightning/i386/asm.h: Define JC and JNC mnemonics. | |
3349 | * lightning/i386/fp-32.h: Fix jit_fp_btest. All reported | |
3350 | by Mike Spivey. | |
3351 | ||
3352 | 2008-10-09 Paolo Bonzini <bonzini@gnu.org> | |
3353 | ||
3354 | * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end. | |
3355 | Reported by Eli Barzilay and Matthew Flatt. | |
3356 | ||
3357 | 2008-08-23 Nix <nix@esperi.org.uk> | |
3358 | ||
3359 | * lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files. | |
3360 | ||
3361 | 2008-07-02 Laurent Michel <ldm@engr.uconn.edu> | |
3362 | ||
3363 | * lightning/ppc/funcs.h (jit_flush_code): modified the computation | |
3364 | of start/end. The pointer arithmetic was done without casting. It | |
519a9ea1 | 3365 | prevented compilation with recent gcc versions. |
4a71579b PC |
3366 | * lightning/ppc/core.h (jit_pushr_i): The offset for the store was |
3367 | incorrect. Should have been 4 bytes below SP (not above). | |
519a9ea1 PC |
3368 | * lightning/ppc/core.h (jit_popr_i): The offset for the load was |
3369 | incorrect. Should have been 0 (not +8). | |
4a71579b PC |
3370 | |
3371 | 2008-06-17 Paolo Bonzini <bonzini@gnu.org> | |
3372 | ||
3373 | * lightning/i386/asm-64.h: Forward IMULQir to IMULQirr, | |
3374 | fix REXQ order for IMULQirr. | |
3375 | ||
3376 | 2008-06-17 Paolo Bonzini <bonzini@gnu.org> | |
3377 | ||
3378 | * lightning/i386/core.h: Fix _rN vs. _rR. | |
3379 | ||
3380 | 2008-06-16 Paolo Bonzini <bonzini@gnu.org> | |
3381 | ||
3382 | * lightning/i386/core.h: Use jit_save in jit_replace. Move JIT_R | |
3383 | definition... | |
3384 | * lightning/i386/core-32.h: ... here; define jit_save so that | |
3385 | the core.h has no effect on the 32-bit backend. | |
3386 | * lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11, | |
3387 | place outgoing arguments in the right spot from the beginning, | |
3388 | define jit_save, fix jit_reg8/jit_reg16. | |
3389 | ||
3390 | 2008-06-15 Paolo Bonzini <bonzini@gnu.org> | |
3391 | ||
3392 | * lightning/i386/core-64.h: Rewrite argument passing to | |
3393 | support up to 6 arguments and generate less code. | |
3394 | ||
3395 | 2008-06-14 Laurent Michel <ldm@thorgal.homelinux.org> | |
3396 | ||
3397 | * lightning/i386/core-64.h (jit_movi_l): When the operand is 0, | |
3398 | the XOR should be on a quadword. | |
3399 | * lightning/i386/core-64.h (jit_prolog): Keep 16-byte stack | |
3400 | alignment. | |
3401 | (jit_ret): Always use LEAVE. | |
3402 | ||
3403 | 2008-06-13 Laurent Michel <ldm@thorgal.homelinux.org> | |
3404 | ||
3405 | * lightning/i386/core-64.h: Add (void) casts for C++ compatibility. | |
3406 | * lightning/i386/asm.h: Likewise. | |
3407 | ||
3408 | 2008-06-12 Paolo Bonzini <bonzini@gnu.org> | |
3409 | ||
3410 | * lightning/i386/core.h: Move JIT_V definition... | |
3411 | * lightning/i386/core-32.h: ... here. | |
3412 | * lightning/i386/core-64.h: ... and here. Avoid dancing between | |
3413 | RSI/RDI and R12/R13, and place JIT_V1/JIT_V2 in R12/R13. | |
3414 | ||
3415 | 2008-06-11 Paolo Bonzini <bonzini@gnu.org> | |
3416 | ||
3417 | * build-aux/lightning.m4: Adjust LIGHTNING_BACKENDS, don't | |
3418 | use suffix support to distinguish i386/x86_64. | |
3419 | * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES | |
3420 | to distribute *-32.h and *-64.h files now. | |
3421 | * lightning/i386/asm-i386: Moved to... | |
3422 | * lightning/i386/asm.h: Include the appropriate subtarget file. | |
3423 | * lightning/i386/core-i386: Moved to... | |
3424 | * lightning/i386/core.h: Include the appropriate subtarget file. | |
3425 | * lightning/i386/fp.h: New, include the appropriate subtarget file. | |
3426 | * lightning/i386/asm-32: Do not include asm-i386.h. | |
3427 | * lightning/i386/asm-64.h: Likewise. | |
3428 | * lightning/i386/core-32: Do not include core-i386.h. | |
3429 | * lightning/i386/core-64.h: Likewise. | |
3430 | * lightning/Makefile.am: Adjust for renamed files. | |
3431 | ||
3432 | * configure.ac: Define LIGHTNING_TARGET here. | |
3433 | * opcode/disass.c: Change list of valid LIGHTNING_TARGET values. | |
3434 | ||
3435 | * lightningize.in: Robustify against missing subtarget files. | |
3436 | ||
3437 | 2008-06-11 Paolo Bonzini <bonzini@gnu.org> | |
3438 | ||
3439 | * lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l | |
3440 | to implement jit_movi_p. | |
3441 | ||
3442 | 2008-06-11 Paolo Bonzini <bonzini@gnu.org> | |
3443 | ||
3444 | * lightning/i386/core-32.h: Use separate __APPLE__ and SysV | |
3445 | prolog/ret macros. Subtract 12 bytes in __APPLE__ case to | |
3446 | keep stack aligned, and always use LEAVE in the epilog. | |
3447 | ||
3448 | 2008-06-11 Paolo Bonzini <bonzini@gnu.org> | |
3449 | ||
3450 | * lightning/i386/core-i386.h: Fix C++ incompatibility. | |
3451 | ||
3452 | 2008-06-10 Laurent Michel <ldm@engr.uconn.edu> | |
3453 | ||
3454 | * lightning/i386/core-i386.h: Fix jit_replace8 for | |
3455 | case when one of the operands is _EAX. | |
3456 | ||
3457 | 2008-05-19 Paolo Bonzini <bonzini@gnu.org> | |
3458 | ||
3459 | * tests/run-test: Avoid CRLF issues on mingw. | |
3460 | ||
3461 | 2008-03-21 Paolo Bonzini <bonzini@gnu.org> | |
3462 | ||
3463 | * lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}. | |
3464 | Remove jit_ld{,x}i_ul. | |
3465 | * lightning/core-common.h: Make jit_ld{,x}{i,r}_ul | |
3466 | always a synonym of the _l variant. | |
3467 | * doc/porting.texi: Document this. | |
3468 | ||
3469 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3470 | ||
3471 | * lightning/i386/core-64.h: Fix uses of jit_qop_. | |
3472 | ||
3473 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3474 | ||
3475 | * lightning/i386/core-64.h: Add boolean operations. | |
3476 | ||
3477 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3478 | ||
3479 | * lightning/i386/asm-64.h: Add LEAQmr. | |
3480 | ||
3481 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3482 | ||
3483 | * lightning/i386/core-64.h: Misc bugfixes. | |
3484 | ||
3485 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3486 | ||
3487 | * lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i. | |
3488 | * lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i. | |
3489 | * lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul}; | |
3490 | move jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l with others. | |
3491 | ||
3492 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3493 | ||
3494 | * lightning/asm-common.h: Add _s32P. | |
3495 | ||
3496 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3497 | ||
3498 | * lightning/i386/core-64.h: Implement long mul/div/mod. | |
3499 | ||
3500 | 2008-03-19 Paolo Bonzini <bonzini@gnu.org> | |
3501 | ||
3502 | * lightning/i386/asm-i386.h: Cast memory address to long for JCCim. | |
3503 | ||
3504 | 2008-03-15 Paolo Bonzini <bonzini@gnu.org> | |
3505 | ||
3506 | * lightning/asm-common.h: Add underscores around __unused__ | |
3507 | attribute. | |
3508 | ||
3509 | 2008-03-15 Paolo Bonzini <bonzini@gnu.org> | |
3510 | ||
3511 | * lightning/ppc/core.h: Avoid some "value computed is not used" | |
3512 | warnings. | |
3513 | * lightnings/tests/allocai.c: Silence other warnings. | |
3514 | ||
3515 | 2008-03-14 Paolo Bonzini <bonzini@gnu.org> | |
3516 | ||
3517 | * lightningize.in: Fix some problems (not all). | |
3518 | ||
3519 | 2008-03-14 Paolo Bonzini <bonzini@gnu.org> | |
3520 | ||
3521 | * lightning/i386/core-32.h: Avoid some "value computed is not used" | |
3522 | warnings; reported by Sam Steingold. | |
3523 | ||
3524 | 2008-03-08 Paolo Bonzini <bonzini@gnu.org> | |
3525 | ||
3526 | * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI). | |
3527 | ||
3528 | 2008-02-13 Paolo Bonzini <bonzini@gnu.org> | |
3529 | ||
3530 | * lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by | |
3531 | Sam Steingold. | |
3532 | * lightning/i386/asm-64.h: Likewise. | |
3533 | ||
3534 | 2008-02-08 Paolo Bonzini <bonzini@gnu.org> | |
3535 | ||
3536 | * lightning/i386/asm-i386.h: Don't define _VOID, reported | |
3537 | by Reini Urban. | |
3538 | ||
3539 | 2008-02-03 Paolo Bonzini <bonzini@gnu.org> | |
3540 | ||
3541 | * build-aux/lightning.m4: Add --with-lightning-prefix option, suggested | |
3542 | by Sam Steingold. | |
3543 | ||
3544 | 2008-01-14 Paolo Bonzini <bonzini@gnu.org> | |
3545 | ||
3546 | * lightning/i386/core-64.h: Use CALLsr, not CALLLsr. | |
3547 | ||
3548 | 2008-01-13 Paolo Bonzini <bonzini@gnu.org> | |
3549 | ||
3550 | * lightning/i386/core-i386.h: Move jit_calli and jit_callr... | |
3551 | * lightning/i386/core-32.h: ... here. | |
3552 | * lightning/i386/core-64.h: Redefine them. | |
3553 | ||
3554 | 2008-01-05 Paolo Bonzini <bonzini@gnu.org> | |
3555 | ||
3556 | * lightning/i386/fp-32.h: Fix sub(a,0,a). | |
3557 | * lightning/tests/3to2.c: Add new testcases. | |
3558 | * lightning/tests/3to2.ok: Add new testcases. | |
3559 | ||
3560 | 2008-01-02 Paolo Bonzini <bonzini@gnu.org> | |
3561 | ||
3562 | * lightning/i386/fp-32.h: Fix sub(a,b,a) with a ~= JIT_FPR0. | |
3563 | * lightning/tests/3to2.c: New. | |
3564 | * lightning/tests/3to2.ok: New. | |
3565 | ||
3566 | 2007-11-07 Paolo Bonzini <bonzini@gnu.org> | |
3567 | ||
3568 | * opcode/Makefile.am: Fix AM_CPPFLAGS. | |
3569 | ||
3570 | 2007-08-12 Paolo Bonzini <bonzini@gnu.org> | |
3571 | ||
3572 | * lightning/i386/core-i386.h: Improve encoding of set* instructions. | |
3573 | * lightning/i386/core-64.h: Fix jit_bra_l. | |
3574 | * tests/sete.c: New. | |
3575 | * tests/sete.ok: New. | |
3576 | ||
3577 | 2007-06-29 Paolo Bonzini <bonzini@gnu.org> | |
3578 | ||
3579 | * tests/bp.c: Upgrade to GPL/LGPLv3. | |
3580 | * lightning/i386/asm-32.h: Upgrade to GPL/LGPLv3. | |
3581 | * lightning/i386/asm-64.h: Upgrade to GPL/LGPLv3. | |
3582 | * lightning/i386/core-32.h: Upgrade to GPL/LGPLv3. | |
3583 | * lightning/i386/core-64.h: Upgrade to GPL/LGPLv3. | |
3584 | * lightning/i386/fp-64.h: Upgrade to GPL/LGPLv3. | |
3585 | * lightning/sparc/asm.h: Upgrade to GPL/LGPLv3. | |
3586 | * lightning/sparc/core.h: Upgrade to GPL/LGPLv3. | |
3587 | * lightning/sparc/fp.h: Upgrade to GPL/LGPLv3. | |
3588 | * lightning/sparc/funcs.h: Upgrade to GPL/LGPLv3. | |
3589 | * lightning/i386/asm-i386.h: Upgrade to GPL/LGPLv3. | |
3590 | * lightning/i386/core-i386.h: Upgrade to GPL/LGPLv3. | |
3591 | * lightning/i386/fp-32.h: Upgrade to GPL/LGPLv3. | |
3592 | * lightning/i386/funcs.h: Upgrade to GPL/LGPLv3. | |
3593 | * lightning/ppc/asm.h: Upgrade to GPL/LGPLv3. | |
3594 | * lightning/ppc/core.h: Upgrade to GPL/LGPLv3. | |
3595 | * lightning/ppc/fp.h: Upgrade to GPL/LGPLv3. | |
3596 | * lightning/ppc/funcs.h: Upgrade to GPL/LGPLv3. | |
3597 | * lightning.h: Upgrade to GPL/LGPLv3. | |
3598 | * tests/add.c: Upgrade to GPL/LGPLv3. | |
3599 | * tests/fib.c: Upgrade to GPL/LGPLv3. | |
3600 | * tests/testfp.c: Upgrade to GPL/LGPLv3. | |
3601 | * tests/fibdelay.c: Upgrade to GPL/LGPLv3. | |
3602 | * tests/fibit.c: Upgrade to GPL/LGPLv3. | |
3603 | * tests/funcfp.c: Upgrade to GPL/LGPLv3. | |
3604 | * tests/incr.c: Upgrade to GPL/LGPLv3. | |
3605 | * tests/printf.c: Upgrade to GPL/LGPLv3. | |
3606 | * tests/printf2.c: Upgrade to GPL/LGPLv3. | |
3607 | * tests/rpn.c: Upgrade to GPL/LGPLv3. | |
3608 | * tests/rpnfp.c: Upgrade to GPL/LGPLv3. | |
3609 | * lightning/asm-common.h: Upgrade to GPL/LGPLv3. | |
3610 | * lightning/core-common.h: Upgrade to GPL/LGPLv3. | |
3611 | * lightning/fp-common.h: Upgrade to GPL/LGPLv3. | |
3612 | * lightning/funcs-common.h: Upgrade to GPL/LGPLv3. | |
3613 | * opcode/dis-buf.c: Upgrade to GPL/LGPLv3. | |
3614 | * opcode/disass.c: Upgrade to GPL/LGPLv3. | |
3615 | * opcode/i386-dis.c: Upgrade to GPL/LGPLv3. | |
3616 | * opcode/sparc-dis.c: Upgrade to GPL/LGPLv3. | |
3617 | * opcode/sparc-opc.c: Upgrade to GPL/LGPLv3. | |
3618 | * lightningize.in: Upgrade to GPL/LGPLv3. | |
3619 | * opcode/bfd.h: Upgrade to GPL/LGPLv3. | |
3620 | * opcode/i386.h: Upgrade to GPL/LGPLv3. | |
3621 | * opcode/sparc.h: Upgrade to GPL/LGPLv3. | |
3622 | ||
3623 | 2007-01-26 Thomas Girard <thomas.g.girard@free.fr> | |
3624 | ||
3625 | * lightning/Makefile.am: Add clean-local target. | |
3626 | ||
3627 | 2006-12-02 Paolo Bonzini <bonzini@gnu.org> | |
3628 | ||
3629 | * lightning/i386/asm-i386.h: Add CVTTS?2SIL. | |
3630 | * lightning/i386/asm-64.h: Add CVTTS?2SIQ. | |
3631 | * lightning/i386/fp-64.h: Use it. | |
3632 | ||
3633 | * lightning/Makefile.am: Place files in nodist_lightning_HEADERS. | |
3634 | ||
3635 | 2006-11-23 Paolo Bonzini <bonzini@gnu.org> | |
3636 | ||
3637 | * lightning/core-common.h: Add casts in "*i_p" variants. | |
3638 | * lightning/i386/asm-32.h: Add _r1. | |
3639 | * lightning/i386/asm-64.h: Likewise, and add SSE instructions. | |
3640 | * lightning/i386/asm-i386.h: Merge SSE instructions from Gwenole. | |
3641 | Use short form for 16-bit AX instructions. Remove _r1 | |
3642 | * lightning/i386/core-64.h: Add FP ABI support in its infancy. | |
3643 | * lightning/i386/core-i386.h: Move jit_arg_f and jit_arg_d... | |
3644 | * lightning/i386/core-32.h: ... and jit_prepare_f and jit_prepare_d... | |
3645 | * lightning/i386/fp-32.h: ... here. | |
3646 | * lightning/i386/fp-64.h: Write the code. | |
3647 | * lightning/sparc/fp.h: Fix jit_extr_{f_d,d_f} register order. | |
519a9ea1 | 3648 | |
4a71579b PC |
3649 | 2006-11-22 Paolo Bonzini <bonzini@gnu.org> |
3650 | ||
3651 | * lightning/i386/asm-i386.h: Move x86-64 instructions... | |
3652 | * lightning/i386/asm-64.h: ... here. | |
3653 | * lightning/i386/fp-32.h: Fix bugfixes worked around in froofyJIT. | |
3654 | Add JIT_FPRET. | |
3655 | * lightning/sparc/fp.h: Likewise. | |
3656 | * lightning/ppc/fp.h: Likewise. | |
3657 | * lightning/fp-common.h: Adjust for JIT_FPRET. | |
3658 | * tests/funcfp.c: Adjust for JIT_FPRET. | |
3659 | * tests/rpnfp.c: Adjust for JIT_FPRET. | |
3660 | ||
3661 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3662 | ||
3663 | * lightning/i386/asm-i386.h: Add an underscore to macros without | |
3664 | a parameter. | |
3665 | ||
3666 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3667 | ||
3668 | * lightning/i386/core-i386.h: Move jit_movip, jit_check8, jit_reg8, | |
3669 | jit_reg16, jit_movbrm... | |
3670 | * lightning/i386/core-32.h: ... here. | |
3671 | * lightning/i386/core-64.h: Redefine them. Fix other bugs. | |
3672 | ||
3673 | * tests/printf.c: Do not do a varargs call. | |
3674 | ||
3675 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3676 | ||
3677 | * lightning/i386/asm-i386.h: Check in rewrite from Basilisk II. | |
3678 | * lightning/i386/asm-32.h: Adjust. | |
3679 | * lightning/i386/asm-64.h: Adjust. | |
3680 | * lightning/i386/fp-32.h: Adjust. | |
3681 | ||
3682 | * lightning/i386/core-32.h: Adjust. Add jit_{ld,ldx,st,stx}i*. | |
3683 | * lightning/i386/core-64.h: Adjust. Add jit_{ld,ldx,st,stx}i*. | |
3684 | * lightning/i386/core-i386.h: Adjust. Remove these patterns. | |
3685 | ||
3686 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3687 | ||
3688 | * lightning/i386/asm-i386.h: Merge 64-bit cleanliness changes from | |
3689 | mzscheme. | |
3690 | Add SSE. | |
3691 | * lightning/i386/asm-64.h: Likewise. | |
3692 | ||
3693 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3694 | Ludovic Courtes <ludo@chbouib.org> | |
3695 | ||
3696 | * lightning/i386/core-32.h: Disable jit_push and jit_pop if stack not | |
3697 | needed. | |
3698 | * lightning/i386/core-64.h: Disable jit_push and jit_pop if stack not | |
3699 | needed. | |
3700 | * lightning/sparc/core.h: Merge final implementation of jit_pushr and | |
3701 | jit_popr. | |
3702 | * lightning/ppc/core.h: Fix implementation of jit_pushr and jit_popr to | |
3703 | work (more or less) across function calls. | |
3704 | ||
3705 | * tests/push-pop.c, tests/push-pop.ok: New test. | |
3706 | * tests/Makefile.am: Run it. | |
3707 | ||
3708 | 2006-11-20 Paolo Bonzini <bonzini@gnu.org> | |
3709 | ||
3710 | * lightning/asm-common.h: Make 64-bit safe. | |
3711 | * lightning/i386/funcs.h: Make 64-bit safe. | |
3712 | ||
3713 | * lightning/i386/asm-64.h: More merge from mzscheme. | |
3714 | * lightning/i386/asm-i386.h: More merge from mzscheme. | |
3715 | * lightning/i386/core-32.h: More merge from mzscheme. | |
3716 | * lightning/i386/core-64.h: More merge from mzscheme. | |
3717 | * lightning/i386/core-i386.h: More merge from mzscheme. | |
3718 | ||
3719 | * tests/rpnfp.c, tests/testfp.c, tests/funcfp.c: Skip if no | |
3720 | floating-point support. | |
3721 | ||
3722 | 2006-11-04 Paolo Bonzini <bonzini@gnu.org> | |
3723 | ||
3724 | * tests/rpn.c: Remove pushr/popr. | |
3725 | ||
3726 | 2006-11-04 Paolo Bonzini <bonzini@gnu.org> | |
3727 | ||
3728 | * lightning/ppc/core.h: Implement jit_allocai, define JIT_FP to be R1. | |
3729 | * lightning/ppc/funcs.h: Store frame size into _jitl. Store R1 before | |
3730 | the STMW, so that the offset is unchanged when we patch the STMW. | |
3731 | * lightning/i386/core.h: Define JIT_FP to be EBP. | |
3732 | * lightning/i386/core-32.h: Implement jit_allocai, put LEAVE in the | |
3733 | epilog if jit_allocai was used. | |
3734 | * lightning/i386/core-64.h: Implement jit_allocai, put LEAVE in the | |
3735 | epilog if jit_allocai was used. | |
3736 | ||
3737 | 2006-11-04 Ludovic Courtes <ludo@chbouib.org> | |
3738 | ||
3739 | * lightning/sparc/core.h: Implement jit_allocai. | |
3740 | * tests/allocai.c: New. | |
3741 | * tests/Makefile.am: Point to new tests. | |
3742 | ||
3743 | 2006-11-03 Paolo Bonzini <bonzini@gnu.org> | |
3744 | ||
3745 | * lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT. | |
3746 | "AND." does signed comparisons. | |
3747 | ||
3748 | 2006-10-31 Paolo Bonzini <bonzini@gnu.org> | |
3749 | ||
3750 | * doc/porting.texi: Rename JIT_FP to JIT_AP. | |
3751 | * lightning/core-common.h: Likewise. | |
3752 | * lightning/i386/core-i386.h: Likewise. | |
3753 | * lightning/fp-common.h: Provide default versions of jit_getarg_[fd]. | |
3754 | * lightning/i386/fp-32.h: Don't provide jit_getarg_[fd]. | |
3755 | * lightning/ppc/fp.h: Likewise. | |
3756 | ||
3757 | 2006-10-31 Ludovic Courtes <ludo@chbouib.org> | |
3758 | ||
3759 | * doc/using.texi (The instruction set): Clarified the use of `JIT_RET' and | |
3760 | documented `jit_retval'. | |
3761 | * tests/ret.c (generate_function_proxy): After `jit_finish', use | |
3762 | `jit_retval_i' to move FUNC's return value into the correct register. | |
3763 | ||
3764 | 2006-10-31 Paolo Bonzini <bonzini@gnu.org> | |
3765 | Ludovic Courtes <ludo@chbouib.org> | |
3766 | ||
3767 | * tests/divi.c, tests/divi.ok, tests/movi.c, tests/movi.ok: New. | |
3768 | * tests/ldxi.c: Ensure large pointer is generated. | |
3769 | * tests/Makefile.am: Point to new tests. | |
3770 | * lightning.h: Include funcs-common.h before funcs.h. | |
3771 | * lightning/sparc/core.h: Fix bugs in modi/divi. | |
3772 | ||
3773 | 2006-10-30 Paolo Bonzini <bonzini@gnu.org> | |
3774 | ||
3775 | * lightning/Makefile.am: Use "ln -sf". | |
3776 | * lightning/core-common.h: Define jit_negr_l if necessary. | |
3777 | ||
3778 | 2006-10-30 Paolo Bonzini <bonzini@gnu.org> | |
3779 | ||
3780 | * lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros. | |
3781 | ||
3782 | 2006-10-29 Paolo Bonzini <bonzini@gnu.org> | |
3783 | ||
3784 | * configure.ac: Use lightning.m4 macros. | |
3785 | * lightning.m4: Refactor to use common code in configure.ac. Move... | |
3786 | * build-aux/lightning.m4: ... here. | |
3787 | * lightningize.in: Support suffixes. | |
3788 | * opcode/disass.in: Adapt to changes in configure.ac. | |
3789 | ||
3790 | * lightning/ppc/funcs.h: Use __APPLE__ instead of _CALL_DARWIN. | |
3791 | * lightning/i386/core-32.h: Likewise. | |
3792 | ||
3793 | 2006-10-26 Paolo Bonzini <bonzini@gnu.org> | |
3794 | ||
3795 | * configure.ac: Fix compilation test. | |
3796 | * lightning/Makefile.am: Symlink LIGHTNING_TARGET_FILES in | |
3797 | non-distribution mode. | |
3798 | * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES. | |
3799 | ||
3800 | 2006-10-26 Paolo Bonzini <bonzini@gnu.org> | |
3801 | ||
3802 | * configure.ac: Subst cpu. | |
3803 | * lightning/core-common.h: Make tests pass on i386. | |
3804 | * lightning/i386/asm-32.h: Make tests pass on i386. | |
3805 | * lightning/i386/asm-64.h: Make tests pass on i386. | |
3806 | * lightning/i386/asm-i386.h: Make tests pass on i386. | |
3807 | * lightning/i386/core-32.h: Make tests pass on i386. | |
3808 | * lightning/i386/core-64.h: Make tests pass on i386. | |
3809 | * lightning/i386/core-i386.h: Make tests pass on i386. | |
3810 | * tests/Makefile.am: Include files from cpu directory. | |
3811 | ||
3812 | 2006-10-26 Paolo Bonzini <bonzini@gnu.org> | |
3813 | ||
3814 | * lightning/i386/asm.h: Move to asm-i386.h | |
3815 | * lightning/i386/asm-32.h: New, from Matthew Flatt. | |
3816 | * lightning/i386/asm-64.h: New, from Matthew Flatt. | |
3817 | * lightning/i386/core.h: Move to core-i386.h | |
3818 | * lightning/i386/core-32.h: New, from Matthew Flatt. | |
3819 | * lightning/i386/core-64.h: New, from Matthew Flatt. | |
3820 | * lightning/i386/fp.h: Move to fp-32.h | |
3821 | * lightning/i386/fp-64.h: New, dummy. | |
3822 | * lightning/i386/Makefile.frag: New. | |
3823 | * lightning/Makefile.am: Support per-target Makefile fragments. | |
3824 | * configure.ac: Support per-target Makefile fragments and CPU suffixes. | |
3825 | ||
3826 | 2006-10-16 Paolo Bonzini <bonzini@gnu.org> | |
3827 | ||
3828 | * lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-( | |
3829 | ||
3830 | 2006-07-06 Paolo Bonzini <bonzini@gnu.org> | |
3831 | Ludovic Courtes <ludovic.courtes@laas.fr> | |
3832 | ||
3833 | * doc/using.texi: Clarify "Using autoconf" section | |
3834 | and rename it to "Bundling lightning" | |
3835 | * lightning.m4: Work also if lightning is not bundled. | |
3836 | ||
3837 | 2006-07-06 Paolo Bonzini <bonzini@gnu.org> | |
3838 | Ludovic Courtes <ludovic.courtes@laas.fr> | |
3839 | ||
3840 | * lightning/ppc/core.h (_jit_mod): Replace with... | |
3841 | (_jit_mod_big, _jit_mod_small): ... these. | |
3842 | (jit_modi_i, jit_modi_ui): Rewrite. | |
3843 | * tests/modi.c, tests/modi.ok: New tests. | |
3844 | ||
3845 | 2006-05-18 Matthew Flatt <mflatt@cs.utah.edu> | |
3846 | ||
3847 | * lightning/i386/asm.h: Fix test for extending the mprotect area | |
3848 | towards lower addresses. | |
3849 | ||
3850 | 2006-05-16 Bruno Haible <bruno@clisp.org> | |
3851 | ||
3852 | * lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if | |
3853 | not compiling with GNU C. | |
3854 | ||
3855 | 2006-02-16 Paolo Bonzini <bonzini@gnu.org> | |
3856 | ||
3857 | * lightning/ppc/core.h: Fix jit_ldxi_* with big displacement. | |
3858 | ||
3859 | 2006-01-23 Paolo Bonzini <bonzini@gnu.org> | |
3860 | ||
3861 | * configure.ac: Fix comments in config.h.in. | |
519a9ea1 | 3862 | |
4a71579b PC |
3863 | 2005-11-25 Paolo Bonzini <bonzini@gnu.org> |
3864 | ||
3865 | * lightning/sparc/fp.h: Fix header comment. | |
3866 | * lightning/ppc/fp.h: Fix header comment. | |
3867 | ||
3868 | 2005-04-27 Paolo Bonzini <bonzini@gnu.org> | |
3869 | ||
3870 | * lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New. | |
3871 | ||
3872 | 2004-11-26 Paolo Bonzini <bonzini@gnu.org> | |
3873 | ||
3874 | * lightning/ppc/funcs.h (_jit_epilog): Remove unused variable. | |
3875 | ||
3876 | 2004-11-13 Paolo Bonzini <bonzini@gnu.org> | |
3877 | ||
3878 | * lightning/i386/funcs.h [__linux__]: Include sys/mman.h. | |
3879 | ||
3880 | 2004-11-09 Paolo Bonzini <bonzini@gnu.org> | |
3881 | ||
3882 | * lightning/sparc/fp.h: Fix fp-to-integer conversions. | |
3883 | * lightning/ppc/testfp.c: Test fp-to-integer conversions | |
3884 | of integer numbers. | |
3885 | * lightning/ppc/testfp.ok: Adjust for the above. | |
3886 | ||
3887 | 2004-11-08 Paolo Bonzini <bonzini@gnu.org> | |
3888 | ||
3889 | * lightning/ppc/testfp.c: Always flush code before | |
3890 | testing it. | |
3891 | ||
3892 | 2004-11-08 Paolo Bonzini <bonzini@gnu.org> | |
3893 | ||
3894 | * lightning/ppc/fp.h: Do not clobber f31. | |
3895 | ||
3896 | 2004-11-08 Paolo Bonzini <bonzini@gnu.org> | |
3897 | ||
3898 | * lightning.h: New name of... | |
3899 | * lightning-inst.h: ... this file. | |
3900 | * lightning.h.in: Removed. | |
3901 | ||
3902 | * opcodes/disass.c: Include config.h. | |
3903 | * tests/add.c: Include config.h. | |
3904 | * tests/bp.c: Include config.h. | |
3905 | * tests/fib.c: Include config.h. | |
3906 | * tests/fibdelay.c: Include config.h. | |
3907 | * tests/fibit.c: Include config.h. | |
3908 | * tests/funcfp.c: Include config.h. | |
3909 | * tests/incr.c: Include config.h. | |
3910 | * tests/printf.c: Include config.h. | |
3911 | * tests/printf2.c: Include config.h. | |
3912 | * tests/rpn.c: Include config.h. | |
3913 | * tests/rpnfp.c: Include config.h. | |
3914 | * tests/testfp.c: Include config.h. | |
3915 | ||
3916 | 2004-10-12 Paolo Bonzini <bonzini@gnu.org> | |
3917 | ||
3918 | * lightning/i386/fp.h: Fix bugs in conditional branches. | |
3919 | ||
3920 | 2004-10-10 Paolo Bonzini <bonzini@gnu.org> | |
3921 | ||
3922 | * lightning/i386/funcs.h: Fix pasto in jit_flush_code. | |
3923 | ||
3924 | 2004-10-08 Paolo Bonzini <bonzini@gnu.org> | |
3925 | ||
3926 | * lightning/ppc/fp.h: Optimized conditional branches. | |
3927 | ||
3928 | 2004-09-20 Paolo Bonzini <bonzini@gnu.org> | |
3929 | ||
3930 | * lightning/ppc/asm.h: Fix more typos. | |
3931 | ||
3932 | 2004-09-20 Paolo Bonzini <bonzini@gnu.org> | |
3933 | ||
3934 | * lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX. | |
3935 | ||
3936 | 2004-09-20 Paolo Bonzini <bonzini@gnu.org> | |
3937 | ||
3938 | * lightning/ppc/fp.h: Added conditional branches. | |
3939 | ||
3940 | 2004-09-18 Laurent Michel <ldm@thorgal.homelinux.org> | |
3941 | ||
3942 | * lightning/ppc/fp.h (jit_unler_d, jit_unltr_d, jit_unger_d, | |
3943 | jit_ungtr_d, jit_ltgt_d, jit_uneq_d): Implemented missing tests | |
3944 | to fully support testfp. | |
3945 | (jit_floorr_d_i, jit_ceilr_d_i, jit_roundr_d_i, jit_truncr_d_i): | |
3946 | New macros. | |
3947 | * lightning/ppc/asm.h: Added missing opcodes FCTIWZ and MTFSFI. | |
3948 | * lightning/ppc/funcs.h (_jit_prolog): Fixed minor mistake in | |
3949 | the initialization of _jitl.nextarg_geti, relying on the | |
3950 | JIT_AUX macro as well to get the register offset. | |
3951 | ||
3952 | 2004-09-07 Paolo Bonzini <bonzini@gnu.org> | |
3953 | ||
3954 | * lightning/ppc/funcs.h: Fix typo. | |
3955 | ||
3956 | 2004-09-06 Paolo Bonzini <bonzini@gnu.org> | |
3957 | ||
3958 | * tests/funcfp.c: Use %g. Remove C99 variable declarations. | |
3959 | * tests/testfp.c: Don't use __builtin_nan. | |
3960 | ||
3961 | * lightning/ppc/core.h: Add three V registers. | |
3962 | * lightning/ppc/funcs.h: Adjust. | |
3963 | ||
3964 | * lightning/sparc/core.h: Some fixes related to FP argument passing. | |
3965 | Move R0 to %g2, use %o7 for JIT_BIG2. | |
3966 | * lightning/sparc/fp.h: Some fixes related to FP argument passing. | |
3967 | ||
3968 | 2004-09-02 Paolo Bonzini <bonzini@gnu.org> | |
3969 | ||
3970 | * lightning/sparc/core.h: Add another V register, | |
3971 | move R0 to %o7. | |
3972 | ||
3973 | 2004-07-15 Paolo Bonzini <bonzini@gnu.org> | |
3974 | ||
3975 | * lightning/i386/funcs.h: Implement jit_flush_code, | |
3976 | in order to support Fedora's exec-shield. | |
3977 | ||
3978 | 2004-07-14 Paolo Bonzini <bonzini@gnu.org> | |
3979 | ||
3980 | * lightning/core-common.h: Add more jit_extr_*_* macros. | |
3981 | * lightning/doc/using.texi: Be clearer about the order | |
3982 | of arguments in jit_extr_*_*. | |
3983 | * lightning/doc/porting.texi: Add more jit_extr_*_* macros. | |
3984 | * lightning/i386/fp.h: Fix typo in jit_extr_i_d. | |
3985 | ||
3986 | 2004-07-14 Paolo Bonzini <bonzini@gnu.org> | |
3987 | ||
3988 | * lightning/ppc/funcs.h: Adjust offset of LR into | |
3989 | stack frame if running under the Darwin ABI. | |
3990 | ||
3991 | 2004-07-13 Paolo Bonzini <bonzini@gnu.org> | |
3992 | ||
3993 | * lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d. | |
3994 | ||
3995 | 2004-07-13 Paolo Bonzini <bonzini@gnu.org> | |
3996 | ||
3997 | * lightning/ppc/core.h: Fix thinko. | |
3998 | ||
3999 | * lightning/i386/core.h: Fix jit_lti_ui. | |
4000 | * lightning/core-common.h: Add missing macros. | |
4001 | ||
4002 | * lightning/ppc/fp.h: Rename jit_neg_* to jit_negr_*. | |
4003 | * lightning/i386/fp.h: Rename jit_neg_* to jit_negr_*. | |
4004 | * lightning/sparc/fp.h: Rename jit_neg_* to jit_negr_*. | |
4005 | * lightning/fp-common.h: Rename jit_neg_* to jit_negr_*. | |
4006 | * doc/porting.texi: Add undocumented macros. | |
4007 | ||
4008 | 2004-07-12 Paolo Bonzini <bonzini@gnu.org> | |
4009 | ||
4010 | * doc/porting.texi: Add missing macros. | |
4011 | ||
4012 | 2004-07-12 Paolo Bonzini <bonzini@gnu.org> | |
4013 | ||
4014 | * lightning/ppc/funcs.h: Don't generate trampolines. | |
4015 | Separate prolog and epilog generation. | |
4016 | * lightning/ppc/core.h: Generate epilog explicitly. | |
4017 | Don't reserve r31 anymore. | |
4018 | * lightning/core-common.h: Remove call to jit_setup_code. | |
4019 | ||
4020 | 2004-07-09 Paolo Bonzini <bonzini@gnu.org> | |
4021 | ||
4022 | * lightning/lightning.h.in: Avoid preprocessor warnings. | |
4023 | * lightning/lightning-inst.h: Likewise. | |
4024 | ||
4025 | * lightning/i386/core.h: Define JIT_R, JIT_R_NUM, JIT_V, | |
4026 | JIT_V_NUM. | |
4027 | * lightning/ppc/core.h: Likewise. | |
4028 | * lightning/sparc/core.h: Likewise. | |
4029 | * lightning/i386/fp.h: Define JIT_FPR, JIT_FPR_NUM. | |
4030 | * lightning/ppc/fp.h: Likewise. | |
4031 | * lightning/sparc/fp.h: Likewise. | |
4032 | * lightning/core-common.h: Define fixed register names. | |
4033 | * lightning/fp-common.h: Likewise for FP regs. | |
4034 | ||
4035 | 2004-07-09 Paolo Bonzini <bonzini@gnu.org> | |
4036 | ||
4037 | * lightning/ppc/funcs.h: Fix location where return address | |
4038 | is stored. | |
4039 | * lightning/i386/asm.h: Add a trailing _ to opcodes without | |
4040 | any parameter. | |
4041 | * lightning/i386/core.h: Adjust for the above. | |
4042 | ||
4043 | 2004-04-15 Paolo Bonzini <bonzini@gnu.org> | |
4044 | ||
4045 | * lightning/i386/fp.h: Change "and" to "_and" | |
4046 | to satisfy C++ compilers. | |
4047 | ||
4048 | 2004-04-14 Paolo Bonzini <bonzini@gnu.org> | |
4049 | ||
4050 | * lightning/sparc/fp.h: Use memcpy to implement jit_movi. | |
4051 | * lightning/ppc/fp.h: Use memcpy to implement jit_movi. | |
4052 | Move floating-point opcodes... | |
4053 | * lightning/ppc/asm.h: ... here. | |
4054 | ||
4055 | 2004-04-14 Paolo Bonzini <bonzini@gnu.org> | |
4056 | ||
4057 | * lightning/core-common.h: Add jit_finishr. | |
4058 | * lightning/ppc/core.h: Add jit_callr and jit_finishr. | |
4059 | * lightning/i386/core.h: Add jit_callr. | |
4060 | * lightning/sparc/core.h: Add jit_callr. Fix typo. | |
4061 | ||
4062 | 2004-04-14 Paolo Bonzini <bonzini@gnu.org> | |
4063 | ||
4064 | * lightning/i386/core.h: Fix pasto in jit_b*_ui. | |
4065 | ||
4066 | 2004-03-30 Laurent Michel | |
4067 | ||
4068 | * lightning/ppc: Implement PowerPC floating point | |
4069 | (ChangeLog entry missing). | |
4070 | ||
4071 | 2004-03-12 Paolo Bonzini <bonzini@gnu.org> | |
4072 | ||
4073 | * lightning/fp-common.h: Load/store macros are not the | |
4074 | same for floats and doubles anywhere, but jit_retval may be. | |
4075 | * lightning/i386/asm.h: Fix = mistaken for == in ESCrri. | |
4076 | * lightning/i386/core.h: Fix typo in jit_prepare_[fd]. | |
4077 | * lightning/i386/fp.h: Rewritten. | |
4078 | * tests/testfp.c: Add tests for unordered comparisons. | |
4079 | * tests/testfp.ok: Add results. | |
4080 | ||
4081 | 2004-03-15 Paolo Bonzini <bonzini@gnu.org> | |
4082 | ||
4083 | Merge changes from Laurent Michel. | |
4084 | ||
4085 | * lightning/asm-common.h: Add _jit_I_noinc. | |
4086 | * lightning/core-common.h: Support jit_init, | |
4087 | jit_setup_code, jit_patch_at. Return patchable IP from | |
4088 | jit_movi_p. | |
4089 | * lightning/funcs-common.h: Provide defaults | |
4090 | for jit_setup_code, jit_start_pfx, jit_end_pfx | |
4091 | * lightning/i386/core.h: Add jit_patch_at, jit_patch_movi. | |
4092 | * lightning/ppc/core.h: Likewise. | |
4093 | * lightning/sparc/core.h: Likewise. | |
4094 | * lightning/ppc/asm.h: Fix generation of branch destination | |
4095 | displacements in _FB and _BB | |
4096 | * lightning/ppc/core.h: Generate trampolines in the user | |
4097 | area. | |
4098 | * lightning/ppc/funcs.h: Add a few casts. | |
4099 | * tests/bc.c: New testcase. | |
4100 | ||
4101 | * lightning/i386/asm.h: Wrap into #ifndef LIGHTNING_DEBUG. | |
4102 | * lightning/ppc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG. | |
4103 | * lightning/sparc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG. | |
4104 | ||
4105 | ||
4106 | 2004-03-09 Paolo Bonzini <bonzini@gnu.org> | |
4107 | ||
4108 | * lightning/sparc/fp.h: Rewrite. Move macros for | |
4109 | FP code generation... | |
4110 | * lightning/sparc/asm.h: ... here. | |
4111 | * lightning/sparc/core.h: Rename jit_prepare to | |
4112 | jit_prepare_i, jit_retval to jit_retval_i. | |
4113 | * lightning/ppc/core.h: Rename jit_prepare to | |
4114 | jit_prepare_i, jit_retval to jit_retval_i. | |
4115 | * lightning/i386/core.h: Rename jit_prepare to | |
4116 | jit_prepare_i, jit_retval to jit_retval_i. | |
4117 | * lightning/core-common.h: Provide backwards | |
4118 | compatible synonyms for the above. | |
4119 | * lightning/fp-common.h: Rewrite. | |
4120 | * lightning-inst.h: Include fp unconditionally. | |
4121 | * lightning.h.in: Include fp unconditionally. | |
4122 | * tests/Makefile.am: Enable fp tests. | |
4123 | * tests/fib.c: Use jit_retval_i. | |
4124 | * tests/fibit.c: Cast codeBuffer to char *. | |
4125 | * tests/funcfp.c: Use new fp macros. | |
4126 | * tests/printf.c: Use jit_retval_i. | |
4127 | * tests/rpnfp.c: Use new fp macros. | |
4128 | * tests/testfp.c: Use new fp macros. | |
4129 | ||
4130 | 2004-03-02 Paolo Bonzini <bonzini@gnu.org> | |
4131 | ||
4132 | * lightning/i386/core.h: generate correct code when | |
4133 | doing lt/le/ge/etc. on ESI and EDI. Use MOVZX/MOVSX | |
4134 | where possible. | |
4135 | * lightning/i386/asm.h: Add macros for MOVZX/MOVSX. | |
4136 | Move macros for x87 here, and add many of them. | |
4137 | * lightning/i386/fp.h: Use new macros for x87. | |
4138 | ||
4139 | 2004-02-06 Paolo Bonzini <bonzini@gnu.org> | |
4140 | ||
4141 | * lightning/i386/core.h: avoid generating MOV reg, reg. | |
4142 | * lightning/sparc/core.h: fix several bugs. | |
4143 | * lightning/ppc/core.h: fix several bugs. | |
4144 | * tests/rpn.c: rewritten. | |
4145 | ||
4146 | 2004-01-08 Paolo Bonzini <bonzini@gnu.org> | |
4147 | ||
4148 | * tests/rpnfp.c: new example, suggested by Basile | |
4149 | Starynkevitch. | |
4150 | * tests/rpnfp.ok: new example. | |
4151 | ||
4152 | 2003-12-12 Paolo Bonzini <bonzini@gnu.org> | |
4153 | ||
4154 | * tests/add.c: new test, suggested by Steve Dekorte. | |
4155 | * tests/add.c: new test. | |
4156 | ||
4157 | 2003-11-14 Paolo Bonzini <bonzini@gnu.org> | |
4158 | John Redford <eirenik@hotmail.com> | |
4159 | ||
4160 | * lightning/asm-common.h: change the 'pc' field of _jit to | |
4161 | be a union of various data types, because ISO C99 doesn't | |
4162 | permit using ++ on a = cast. Change the incremented casts of | |
4163 | _jit.pc to be _jit.x.uc_pc, _jit.x.us_pc, etc. | |
4164 | * all files: change all non-cast instances of _jit.pc to be | |
4165 | _jit.x.pc. | |
4166 | * lightning/i386/core.h: remove casts from jit_might. | |
4167 | ||
4168 | 2003-05-25 Paolo Bonzini <bonzini@gnu.org> | |
4169 | ||
4170 | * lightning/i386/core.h: use JITSORRY in jit_replace | |
4171 | * lightning/asm-common.h: define JITSORRY | |
4172 | ||
4173 | 2003-05-14 Paolo Bonzini <bonzini@gnu.org> | |
4174 | ||
4175 | * lightning/i386/core.h: fix missing comma in several | |
4176 | load/store macros. | |
4177 | * lightning/core-common.h: fix long/unsigned long/pointer | |
4178 | jit_pushr/jit_popr. | |
4179 | * lightning/ppc/funcs.h: correctly align stack pointer | |
4180 | ||
4181 | No changelogs for the assemblers (lightning directory) until 1.0 | |
519a9ea1 | 4182 | |
4a71579b PC |
4183 | 2003-03-27 Paolo Bonzini <bonzini@gnu.org> |
4184 | ||
4185 | * tests/printf2.c: new test | |
4186 | ||
4187 | 2001-05-03 Paolo Bonzini <bonzini@gnu.org> | |
4188 | ||
4189 | * tests/printf.c: made the message platform independent | |
4190 | ||
4191 | 2001-01-19 Paolo Bonzini <bonzini@gnu.org> | |
4192 | ||
4193 | * configure.in: support cross-assembling | |
519a9ea1 | 4194 | |
4a71579b PC |
4195 | * disass/bfd.h, disass/dis-asm.h, disass/dis-buf.c, |
4196 | disass/i386-dis.c, disass/i386.h, disass/ppc-dis.c, | |
4197 | disass/ppc.h, disass/ppc-opc.c, disass/sparc-dis.c, | |
4198 | disass/sparc.h, disass/sparc-opc.c: new files, from GDB | |
4199 | ||
4200 | * disass/disass.c, disass/Makefile.am: new files | |
4201 | ||
4202 | * tests/fib.c, tests/fibit.c, tests/incr.c, tests/printf.c, | |
4203 | tests/rpn.c, tests/testfp.c, tests/Makefile.am: support | |
4204 | disassembling |