arm-backed-float

View source
arm-backed-float
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind 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
David Schneider
merge default
David Schneider
disable test if the backend does not support floats
David Schneider
Improve freeing of boxes and also free the failargs of guards
David Schneider
rewrite the resoperation dispatch loop a bit and call regalloc._check_invariants on each iteration
David Schneider
(arigo, david) when generating code for a call, force the variable stored in r0 to be spilled if the call has a return value and ensure a register can not be bound to two boxes after a call.
David Schneider
merge default
David Schneider
Reset vable_token in call_assembler and some other fixes to it
David Schneider
Pass cond flag to regalloc_mov and use it instead of directly emiting operations.
David Schneider
fix interface for gen_load_int
David Schneider
merge default
David Schneider
Split the constant loading into two different methods. In total this saves 1 instruction per constant, in the worst case, and makes the exection a bit faster.
David Schneider
Really free the blocks
David Schneider
merge default
David Schneider
import some tests from the x86 backend
David Schneider
in getfield and setfield operations use a register to store the offset of a field when it does not fit in the 12 bits for imm values
David Schneider
implement redirect_call_assembler
David Schneider
use a block of memory that is freed with the loop to store the encoding of the failargs
David Schneider
support refs as imm values in failargs
David Schneider
merge default
David Schneider
merge default
David Schneider
merge default
David Schneider
merge default
David Schneider
merge default
David Schneider
merge default (again)
David Schneider
merge arm-backend-2
David Schneider
merge default
David Schneider
return condition
David Schneider
Finish implementing float operations
David Schneider
Add test case for casting a negative number to a float
David Schneider
merge
David Schneider
mege
David Schneider
Implement FLOAT_TRUEDIV operation
David Schneider
Implement FLOAT_MUL operation
David Schneider
Allow REFs as imm values for encoding when leaving a loop
David Schneider
remove debugging output
David Schneider
Implent FLOAT_SUB
David Schneider
Start implementing support code for floats and FLOAT_ADD operation
David Schneider
Add a test for a basic loop using floats
David Schneider
merge default
David Schneider
In tests create asm files in usession dir
David Schneider
Implement VPUSH instruction
David Schneider
Add support for imm values in float load and store instructions
David Schneider
Start implementing float load and store instructions
David Schneider
Start implementing encoding for 64-bit floating point operations
David Schneider
Move check for operation result down to compute correct longevities even in case of ignored operation results
David Schneider
Do not generate instructions for operations without side effects and an unused result
David Schneider
Merge default and update moved compute_vars_longevity
David Schneider
Remove Restrictions on data proc imm operations
David Schneider
Document the calculation of the size for the allocated memory
David Schneider
Remove more XXX, assert some properties of the generated machine code, required by the specification
David Schneider
Save an instruction in array get and set operations
David Schneider
Improve INT_NEG using reverse substract and remove another XXX
David Schneider
Remove another XXX, load small imm values directly into target register
David Schneider
Remove some XXX annotations from the register allocator
David Schneider
merge default
David Schneider
Fix an issue when emitting a call with a const as the first argument and checking if it survives the call
David Schneider
Remove guard code emitted twice in guard_nonnull_class and move position of patched location for brigdes
David Schneider
Add tests for the branch to offset operation
David Schneider
Pass condition around when generation function epilog
David Schneider
Fix an issue with a wrongly calculated offset size to choose an imm or register based operation
David Schneider
Remove another unused variable and hide some debug info when translated
David Schneider
Remove unused size information for function epilog
David Schneider
merge default
David Schneider
Support offsets larger than imm values for guard class
David Schneider
Implement an ARM cross compilation translation target
David Schneider
Delay reading of the platform variable
David Schneider
Merge default
David Schneider
Remove superfluous call
David Schneider
merge default
David Schneider
Patch bridges correctly again
David Schneider
check for value of fields instead of presences
David Schneider
Update arm backend to use asmmemmgr to manage code blocks and writes to memory
David Schneider
Some assert and variables to translate only the backend, without a frontend
David Schneider
Ignore vim swp and swp files
David Schneider
Remove param for random test
David Schneider
Merge default
David Schneider
dummy merge
David Schneider
Next register allocation fix
David Schneider
Make backend translate again
David Schneider
Fix calls with parameters on the stack and guard_exception
David Schneider
Improve constant loading, some related fixes and well and register allocation fixes
David Schneider
Separete register allocation from codegeneration
David Schneider
improve handling of calls by avoiding spilling arround calls. Fix some more regalloc issues and add typed subclasses of tempbox so they can be stored on the stack.
David Schneider
Another fix for string copying
David Schneider
Fix some more allocation issues in copy operations
David Schneider
(arigo, david) fix copying of unicode strings
David Schneider
Refactor malloc_varsize a bit
David Schneider
Fix malloc_varsize and some other register allocation issues
David Schneider
Make sure guard_nonnull_class fits in current piece of memory
David Schneider
Refactor location encodings
David Schneider
Improve guard_nonnull_class and some smaller fixes
David Schneider
Update str and unicode copy ops to work better with const values
David Schneider
Different register allocation changes
David Schneider
Refactor guard_class code a bit
David Schneider
Refactor string and unicode operations and make sure const arguments work as expected
David Schneider
Correctly support const args in array set/get and len operations and refactor a bit
David Schneider
Fixes for getfield, setfield and for rshift operations with constant arguments
David Schneider
Fix for int_sub and refactor guard_value
David Schneider
Fix comparison ops based on random test results
David Schneider
Import tests based on failing random tests
David Schneider
Refactoring and fixes for arithmetic operations
David Schneider
Fixes and improvementes for int_sub and int_neg
David Schneider
Reduce the number of instructions used for guards
David Schneider
Rpythonification and some bugfixes
David Schneider
Test for the translation of the backend
David Schneider
Exception and string copy operations
David Schneider
Skip test_cond_call_gc_wb for now
David Schneider
Implement guard_class operations, currently only for boehm
David Schneider
Mark some classes as mixins
David Schneider
Implement new_xxx operations, currently with support for boehm gc
David Schneider
Add ptr_eq and ptr_ne operations
David Schneider
Another regalloc fix
David Schneider
Some register allocation fixes
David Schneider
Patch stack pointer from bridges to allow extending the frame while compiling a bridge
David Schneider
Fix ops that read fields to correctly zero or one extend the value when it is smaller than a word. Also fix ofset issues with array operations
David Schneider
Fix a register allocation issue in emit_guard_int_mul_ovf
David Schneider
refactor test_result_is_spilled
David Schneider
Forgot import
David Schneider
merged trunk changes r77502 through r79385 into arm backend branch
David Schneider
Random tests for ARM backend with a custom lists of operations to test
David Schneider
Extend test_assembler_call to test fast and slow path and mark some more tests as requiring floats
David Schneider
Add ARM to the cpu detection
David Schneider
Finish implementing the jump operation, based on the x86 jump code, adapted for the ARM backend
David Schneider
Refactor how guards are generated Now a jump a the head checks the condition and skips the guard if the conditions holds Fixes an issue with spilling withing a guard which was overwritten when patching the guard code from a bridge Also free result vars for the case that they are not used.
David Schneider
Ensure stack pointer patch location fits in the current piece of memory
David Schneider
Correct imm value loading in guard_value
David Schneider
Merge int_mul_ovf and guard_(no_)overflow operations and remove the hack used in that case before
David Schneider
Fix an issue when emit a call
David Schneider
Fix decoding of frame and location information when building a bridge
David Schneider
Improve argument decoding when entering a bridge
David Schneider
Fix result handling when calling helper functions for arithmetic operations
David Schneider
Fix guard_value checking a register when the second argument is immediate
David Schneider
Fix call operation for calls with void return value
David Schneider
Implement call_assembler operation, for now without reseting the vable token Generate a second entry point to a loop passing the arguments in registers and the stack according to the calling convention for ARM used which is used in the call_assembler operation.
David Schneider
Implement same_as operation
David Schneider
(arigo, david) Fix calls from generated machine code to functions which return values smaller than a word by introducing a hack and masking the values correspondingly
David Schneider
Implement forcing with force_token, call_may_force and guard_no_force operations. Add some logic to possibly merge operations with following guards Additionaly implement some fixes for procedure calling related to the manipulation of frame and stack pointers
David Schneider
Fix passing a forgotten argument used to adjust the sp
David Schneider
Some register allocation related fixes
David Schneider
Implement unicode operations unicodelen, unicodegetitem and unicodesetitem
David Schneider
Implement string operations strlen, strgetitem and strsetitem
David Schneider
Improve guard_true and guard_false and implement guard_value, guard_nonnull and guard_isnull
David Schneider
Temporary hack to check equality flags for mul_ovf, because arm does not set the overflow flags for this operation
David Schneider
Refactor the generation of the functions to write machine instructions
David Schneider
Generate block data transfer instruction encoding and refactor machine code generation tests
David Schneider
Fix a bug when calling functions and placing the sp incorrectly
David Schneider
implement getarrayitem, setarrayitem and arraylen operations
David Schneider
Add get_ and set_field_raw operations
David Schneider
Fixed decoding of spilled values on stack
David Schneider
Implement setfield_gc and getfield_gc operations
David Schneider
Implement extra load store instructions for half word and byte access and refactor tests a bit
David Schneider
Implement POP instruction
David Schneider
Implement CALL operation
David Schneider
Update tests according to changes to long multiply ops
David Schneider
Implement guard_overflow and int_mul_ovf
David Schneider
Correctly set the update flags bit on multiply operations
David Schneider
Implement int_add_ovf and int_sub_ovf
David Schneider
Fix issue with the update flags bit not getting set
David Schneider
Extract patch preparation to a function
David Schneider
Patch generated code to update the stack pointer by the correct amount of words to fit all spilled registers
David Schneider
Implement register spilling on the stack. Introduce a frame pointer to manage the stack frame For now with a fixed frame size of 10 words for spilling
David Schneider
Refactor branch and branch with link patters to methods
David Schneider
Tests for eabi mod function
David Schneider
Better integration of the register allocator
David Schneider
Improve trace exit path
David Schneider
Implement unary int operations and perform some refactoring on opassembler
David Schneider
Update tests after removing CMP method
David Schneider
Implement int and uint comparison operations
David Schneider
Improve and correct jumps from one codeblock to the next one allocated to fit isntructions
David Schneider
Implement uint_floordiv and some helper functions to generate operations
David Schneider
Implement shift operations int_lshift, int_rshift, uint_rshift
David Schneider
Implement int_and, int_or, int_xor operations
David Schneider
Implement int_mul, int_floordiv and int_mod operations. - Added support to codebuilder to allocate new memory for instructions - Implement int_div and int_mod as functions called from assembler, because doesn't provide instructions for them
David Schneider
Encode multiplication operations
David Schneider
move resop implementations to mixins
David Schneider
Extend int_sub and int_add instruction encoding
David Schneider
Implemente guard_false, int_sub, int_eq
David Schneider
Add support for constant int values from args
David Schneider
Introduce locations for registers and replace register numbers with the locations
David Schneider
(david, arigo) implement get_latest_value_count
David Schneider
(david, arigo) handle holes in bridges
David Schneider
Unify input arg and fail boxes
David Schneider
tools -> tool
David Schneider
(david, arigo) Encode and decode args and registers for jumps and bridges
David Schneider
Wrapper for calling objdump on dumped memory
David Schneider
(david, arigo) Add breakpoint instruction
David Schneider
(arigo, david) Hack for mmap to use mmap64
David Schneider
Arch constants
David Schneider
Refactor guards and finish res op to leave using common code. Start implementig bridges based on refactored code.
David Schneider
Add instr. to call coprocessor
David Schneider
Encode ARM imm data instructions
David Schneider
Encode register based data processing and generate functions for them.
David Schneider
Refactor parts of the codebuilder, build load and store instructions from a table
21 commits not shown.