View source
ppc-jit-backend
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Sven Hager
Save and restore nonvolatile registers, made test_call_many_arguments pass.
Sven Hager
Slightly beautified test_call_many_arguments.
Sven Hager
test_call passes, but implementation of CALL is still rudimental.
Sven Hager
(arigo, hager): Started to build proper stack frames, also amde first calls work.
Sven Hager
Removed hardcoded offset from emit_strlen.
edelsohn
assert valid width for field and arrayitem
edelsohn
Implement STRLEN for PPC64
Sven Hager
Implemented STRLEN, STRGETITEM, STRSETITEM. Works for test_basic_string, but is not complete yet.
edelsohn
Implement emit_setfield_raw, emit_getfield_raw, emit_getfield_raw_pure, emit_getfield_gc_pure, emit_setarrayitem_raw, emit_getarrayitem_raw, emit_getarrayitem_gc_pure
edelsohn
Undo mistaken commit skipping tests
edelsohn
Implement emit_arraylen_gc, emit_setarrayitem_gc, emit_getarrayitem_gc
Sven Hager
merge
Sven Hager
Implemented PTR_EQ and PTR_NE.
edelsohn
load_word: change bounds to use <= and >= emit_guard_class: support PPC64
Sven Hager
Implemented GUARD_CLASS and GUARD_NONNULL_CLASS.
edelsohn
emit_getfield_gc typo if -> elif
edelsohn
load_word: optimize upper or lower half of 32 bit constants emit_setfield_gc: Add 8 byte width for PPC64 emit_getfield_gc: Add 8 byte width for PPC64; sign-extend properly emit_guard_value: Add PPC64 compare
Sven Hager
Implemented GUARD_NONNULL, GUARD_ISNULL, GUARD_VALUE.
Sven Hager
merge
Sven Hager
Made test_field_basic pass. Added a test concerning pointers. Reordered some tests in runner.test.
edelsohn
emit_int_is_zero convert to optimized count leading zero algorithm
edelsohn
emit_int_le, emit_int_lt, emit_int_gt, emit_int_ge PPC64 cmpd emit_int_ne fix typo
edelsohn
Add srd, cmpd and srdi.
edelsohn
Enable test_call_function on PPC64 test_call_function must load entire function descriptor for PPC64
edelsohn
load_word loads 64 bit immediate on PPC64 load_from loads 64 bits on PPC64 store_reg stores 64 bits on PPC64 store_reg uses displacement of stw instruction Delete load_dword emit_int_mul PPC64 support emit_int_mul_ovf PPC64 support emit_int_floordiv PPC64 support emit_int_mod PPC64 support emit_int_lshift PPC64 support emit_int_rshift PPC64 support emit_uint_rshift PPC64 support emit_uint_floordiv PPC64 support emit_int_eq optimized seque…
edelsohn
Revert test_load_and_store to using load_word test_load_from must use rffi.LONG Remove test_ld as redundant
Sven Hager
Added David's patch no. 7 to ppc_assembler.py and test_ppc.py.
Sven Hager
Updated import paths and check for underlying architecture to make most of the old backend tests run. However, test_func_builder.py still does not run and has to be fixed.
Sven Hager
Moved test_runner.py to more appropriate directory ppc/test/.
Sven Hager
Added David's patch to the code.
Sven Hager
Added arch.py.
Sven Hager
Fixed bug in test_load_and_store.
Sven Hager
Factored out common code in GUARD_x operations.
Sven Hager
Added GUARD_OVERFLOW instruction.
Sven Hager
Implemented GUARD_NO_OVERFLOW instruction and fixed mechanism for remembering descr objects.
Sven Hager
Removed redundant code in implementation of operations.
Sven Hager
Added David's changes to ppc_field.py and ppc_assembler.py. He added the operation sldi and some convenience methods for 64 bit dword handling. Also fixed some typos.
Sven Hager
Added convenience function for register allocation.
Sven Hager
Implemented INT_INVERT and INT_IS_ZERO. Also replaced load_word(REG, 0) by xor(REG, REG, REG).
Sven Hager
Implemented INT_IS_TRUE and INT_NEG.
Sven Hager
Added a few more comparison instructions to PPCBuilder. The implementation needs a refactoring because the code can be written in a much more common way.
Sven Hager
Implemented a few comparison operations on integers.
Sven Hager
Replaced the giant dispatch code by a lookup into a list which holds the emit_X functions.
Sven Hager
Added Davids patch which allows overlapping bit fields in instructions.
Sven Hager
Implemented a few operations on ints.
Sven Hager
Added initial translation of INT_MUL. Needs some refactorings in the future.
Sven Hager
Beautified emit_int_add and emit_int_sub, fixed a bug in emit_int_sub regarding BoxInt and ConstInt.
Sven Hager
Added David's patch to ppc_field.py.
Sven Hager
Changed emit_int_add, can now handle different combinations of ConstInt and BoxInt arguments.
Sven Hager
Removed NOP from class PPCBuilder, it is implemented in ppc_assembler.py.
Sven Hager
Made add more flexible, added sub. Also support GUARD_FALSE.
Sven Hager
Allow ConstInt objects as parameters for FINISH instructions.
Sven Hager
Added a function to test whether we are on a 64 bit system or not. Could be useful for skipping tests which are supposed to pass on 64 bit only.
Sven Hager
Renamed field "SIMM14" to "ds".
Sven Hager
Implemented clear_latest_values and get_latest_value_count.
Sven Hager
Store indices of those memory pieces in faildescr which hold ~real~ failargs.
Sven Hager
Can now compile bridges, first test passes.
Sven Hager
Added further 64 bit operations to backend. Need more tests, and maybe a 64 bit machine :)
Sven Hager
Remove references to boxes
Sven Hager
merge
Sven Hager
Handle holes in failargs of a guard
Armin Rigo
merge heads
Armin Rigo
Skip the float tests properly, for all CPUs not supporting floats.
Sven Hager
Made some refactorings in classes PPC_64_CPU and PPCBuilder. - PPCBuilder: Added more methods, don't inherit from BlockBuilderMixin any longer - PPC_64_CPU: Changed some attributes and methods, added important method _make_epilogue to patch generated code
Sven Hager
Added some helper methods to Assembler class
Sven Hager
Fixed bug in assembler code representation
Sven Hager
Started implementing the PPC_64_CPU class.
Sven Hager
Skip floating point tests for now.
Sven Hager
Renamed class MyPPCAssembler to PPCBuilder, added some methods for code generation.
Sven Hager
Execute floating point related test only if floating point ops are supported.
Sven Hager
Added test_runner.py and removed x86 stuff from runner.py .
Sven Hager
Removed parameter change of --architecture flag in objdump call.
Sven Hager
Added further tests.
Sven Hager
Added decorator for tests, so less boilerplate code is needed.
Sven Hager
Added some more assembler tests.
Sven Hager
Added some more tests.
Sven Hager
Added test for mr instruction.
Sven Hager
forgot to add files -.-
Sven Hager
bootstrapped branch for powerpc JIT backend, made first test run
David Schneider
(cfbolz, bivab) remove redundant and probably wrong method that is already overwritten a few lines below
David Schneider
(arigo, bivab) fix a stack alignment issue that was triggered when calling the malloc_slowpath in the GC from the JIT
David Schneider
stop copying the header files to the usession directory, but use the default location
David Schneider
improve log message when building using the makefile
Armin Rigo
Translation fix.
David Schneider
merge up to a98d7b4c1f16
David Schneider
merge up to d05a7437ee20
David Schneider
refactor guards make the handling more similar to how it is done in the x86 backend generating a check and a conditional jump to an exit stub that is later generated at the end of the compiled loop.
David Schneider
generate a B(ranch) instruction for jumps with a known offset
David Schneider
small fixes
David Schneider
start implementing support for out of line guards
David Schneider
merge 98d5562c9322 (out of line guards)
David Schneider
merge up to 9ccaeaff6e07
David Schneider
adjust scope of random testing to a more realistic value for ARM
David Schneider
remove outdated test
David Schneider
fix tests
David Schneider
implement support for sqrt in the ARM backend
David Schneider
implement support for sqrt in the ARM backend
David Schneider
add test for jit rewriting of math.sqrt
David Schneider
merge default up to 9439564ba9b3
David Schneider
fix for bc71e715e308 on ARM
David Schneider
add a encode64 helper
David Schneider
merge up to 43861
David Schneider
merge arm-backed-float into arm-backend-2 branch
David Schneider
fix for an issue triggered when a const int is passed as the size to _malloc_varsize.
David Schneider
remove customized version of before_call, because it is not needed any more
David Schneider
add a test for the bug when calling a function with ConstInt arguments and ConstInt(0) being ignored
David Schneider
it is not necesary to align by a word here
David Schneider
use none as an alignement marker when calculating the list of arguments to a call that go on the stack
David Schneider
fix
David Schneider
forgotten import
David Schneider
add decoding of the output as in jit-backend-dump
David Schneider
add some assertions about arguments to malloc operations
David Schneider
typos
David Schneider
implement missing get_on_leave_jitted_hook
Armin Rigo
Argh. Found by chance a small missing piece in the ARM backend. Not implementing this function causes rare crashes, probably missed by any test... :-(
David Schneider
(arigo, bivab) give generated functions more meaningful names
David Schneider
(arigo, bivab) swap the use of the r1 and ip registers here, because ip is really a scratch register that is trashed by a random operation
David Schneider
put this return where it belongs
David Schneider
(arigo, bivab) implement longlong2float and float2longlong in a way that is more close to the C standard. On ARM/32bit this code was causing a reodering of instructions that filled one of the two words with garbage
David Schneider
move functions to helper module and add some tests
David Schneider
use setup_class here
Armin Rigo
In case the variable is already spilled and not living in any register, do nothing.
David Schneider
correct offset calculations for loading and storing spilled floats to and from core registers
David Schneider
make sure to use imm values for offset calculations when possible
David Schneider
implement force_spill operation for testing
David Schneider
(arigo, bivab) add a resoperation for testing called force_spill, that forces a variable to be spilled. It is used to the generate different call patterns with variables that are currently spilled as arguments
David Schneider
mov imm floats to the stack
David Schneider
create and use helpers to move values from and to vfp and core locations
David Schneider
(arigo, bivab) call rewrite_assembler before iterating over the operations
David Schneider
(arigo, bivab) correctly calculate the offset of the variables spilled on the stack
David Schneider
(arigo, bivab) store all vfp registers arround the malloc slowpath call
David Schneider
make sure to spill the variables before reordering them to perform the call
David Schneider
when spilling a variable or loading a spilled one use an immediate value to store the offset on the stack if it is in the range -4095 to 4095
David Schneider
uh, missed this change
David Schneider
correct alignemnt calculation when loading arguments from registers at a call entry point. Also make sure not to overwrite parts of float arguments when moving the arguments to the corresponding locations.
David Schneider
(bivab, arigo): fix argument moving for calls that overwrite others
David Schneider
(arigo, bivab) run this code only once and not for each testcase, causing the test to take forever to start running
David Schneider
(arigo, bivab) generate header and footer for functions when using the shadowstack
David Schneider
(arigo, bivab) implement cond_call_gc_wb operation
David Schneider
(cfbolz, bivab) translation fixes
David Schneider
pypy 1.4 compatibility
David Schneider
import test_zrpy_gc from x86 backend
David Schneider
fix handling of datablocks
David Schneider
translation fixes
David Schneider
more shadowstack integration
David Schneider
import calling conventions tests in x86 backend
David Schneider
move calling convention tests to backend tests
David Schneider
make call_assembler implementation follow work based on the 8 byte stack alignment
David Schneider
remove some superfluous code
David Schneider
test case for mixed argument calls to call_assembler exercising the direct bootstrap code
David Schneider
fix the alignment of values passed in registers to a call
David Schneider
extract counting of arguments passed in registers to a call to a helper function
David Schneider
test to different combinations of arguments passed on stack to ensure the alignment is kept
David Schneider
take the space used for the registers stored on the stack by the malloc code when calculating the offset to the arguments passed on the stack
David Schneider
correct the calculation of the space used for arguments on the stack when doing a call with more than 4 arguments
David Schneider
modify calls to external functions to spill variables all caller saved variables and those containing gc pointers. Also fix the implementation of the calling convention to correctly support the 8 byte stack alingment
David Schneider
reorder arguments to float function in test_call to trigger alignemnt issue
David Schneider
ensure stack alignment when patching the stack pointer to reserve space for spilling variables
David Schneider
ensure 8 byte stack aligment when entering the compiled code
David Schneider
Support newstr and newunicode with framework gcs
David Schneider
(arigo, bivab) support new_array
David Schneider
(bivab, arigo) implement the fastpath of new_with_vtable
David Schneider
(bivab, arigo) implement the malloc slowpath
David Schneider
(arigo, bivab) seems to only be a restriction in the Thumb instruction set and only when the PC is also in the list of registers
David Schneider
(bivab, arigo) start implementing shadowstack support on arm backend. One test passes, yay
David Schneider
(bivab, arigo) import regalloc tests from x86 backend
David Schneider
merge
David Schneider
merge
David Schneider
remove static keyword from pypy_read_timestamp to match the definition in the header file
David Schneider
improve log message
David Schneider
merge arm-backend-2
David Schneider
Avoid indirectly loading rffi before platform has been set
David Schneider
Add documentation about cross translating for ARM
David Schneider
do not use PC as register in tests for instruction generation
David Schneider
merge arm-backend-2
David Schneider
skip test if long longs are not supported by the backend
David Schneider
merge default
David Schneider
finish porting test_jump for arm backend
David Schneider
start importing new jump tests from x86 backend
David Schneider
import changes to compute_vars_longevity from default
David Schneider
register allocation related fixes due to operation merges
David Schneider
remove pdbs
David Schneider
Merge ovf ops with the following guard
David Schneider
fix an issue when pushing a vfp value to the stack that was stored in the spilling area of the stack
David Schneider
use d15 as vfp scratch register and use it instead of temporarily pushing some register
David Schneider
insert stack checks when running non-translated after each operation and at some other places
David Schneider
correctly calculate stack locations for floats
David Schneider
small fixes
David Schneider
in progress: support frame remapping for floats and int/ref
David Schneider
merge default
David Schneider
merge default
David Schneider
fix import
David Schneider
merge default
David Schneider
some register allocation related fixes
David Schneider
fix tests
David Schneider
support floats in the direct bootstrap code called when executing call_assembler
David Schneider
add type based indirection to convert_to_imm
David Schneider
support forcing in combination with floats
David Schneider
correctly associate float registers when updating the bindings to compile a bridge
David Schneider
support spilling of float vars
David Schneider
remove more uses of TempBox
David Schneider
add support for moving values between vfp registers and simplify the same_as operation
David Schneider
simplify the code a bit, here we now values are in register
David Schneider
correctly support floats in (get/set)arrayitem
David Schneider
change the float comparisson operations a bit, because transfering the condition flags from the vfp to the core processor flags changes slighlty the meaning of the condition codes
David Schneider
replace uses of TempBox with TempXXX which contain type information
David Schneider
support floats in guard_value
David Schneider
add float support for (get/set)field and (get/set)arrayitem operations
David Schneider
start adding support for floats to call_assembler
David Schneider
loading of float value into core and vfp registers
David Schneider
Around calls save only registers that are going to be used afterwards
David Schneider
here we also need to spill caller saved registers that are not used after the call
David Schneider
improve interface of VMOV
David Schneider
pass arguments correctly and restore a float result correctly
David Schneider
add missing bit to VMOV instructions
David Schneider
continue implemeting float support in the calling convention
David Schneider
start extending the calling convention implementation to support floats
David Schneider
spill vfp registers around calls
David Schneider
save vfp registers around calls
David Schneider
fix the order of register allocation and freeing to avoid allocation a register for two arguments at the same time
David Schneider
disable the second entry point for loops until the calling convention implementation supports float
David Schneider
merge arm-backend-2
David Schneider
filter registers to be pushed and popped based on the reg_bindings
David Schneider
Use save_registers when generation operations surrounded by PUSH/POP
David Schneider
start using with saved_registers instead of PUSH/POP
David Schneider
create a context manager to manage pushing and popping registers around calls
David Schneider
start using longlong representation for floats
David Schneider
correct loading of constants when entering the loop and add more of the regalloc interface to the common regalloc for both kinds of registers
David Schneider
merge arm-backend-2
David Schneider
categorize floating point registers to be saved around calls
David Schneider
support floats in bridge entry code
David Schneider
return the condition flag in generator helpers
David Schneider
remove some unused parameters
David Schneider
Added tag benchmarks for changeset 370c23f085d7
David Schneider
merge default
David Schneider
Fix frame size calculation for bridges and spilling in large frames
David Schneider
merge default
David Schneider
fix and extend tests
David Schneider
tests and test fixes
David Schneider
Fix some issues with call_assembler
David Schneider
Add two methods required by the frontend
David Schneider
Fix an off-by-one error when doing a jump to a location that is more than 255 bytes away
David Schneider
(arigo, david) patch the frame size of a loop or bridge with a larger value if it jumps to another location that requires a larger frame than the current one would need
David Schneider
generate code to set the SP at a position where it is executed before the frame is used
David Schneider
allow to move const values to stack locations
David Schneider
move procedure generation a bit around
David Schneider
Move some redundant parts of guards to their own procedures
David Schneider
provide a c function wrapping div, unsigned div and mod which are called from the jit for the corresponding operations because arm's application profile does not implement these operations.
David Schneider
do not spill all registers around call_may_force and get rid of the flag for it
David Schneider
improve freeing of boxes in operations merged with guards
214 commits not shown.