int-tag-untag-as-operations

View source
int-tag-untag-as-operations
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Carl Friedrich Bolz-Tereick
treat ADC like ADD
Carl Friedrich Bolz-Tereick
fix test_rerased in test_ajit
Carl Friedrich Bolz-Tereick
transplant 3eb981d2713e from type-specialized-instances
timfel
fix test_lloperation.py::test_canfold_opimpl_complete
timfel
fix typo
timfel
fix test_random for tag operations
timfel
merge default
timfel
fix metainterp tests
timfel
merge default
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
merge
Carl Friedrich Bolz-Tereick
a tagged int cannot move
Carl Friedrich Bolz-Tereick
test and fix: make constand-folding of int_tag not crash
Carl Friedrich Bolz-Tereick
same fix is needed here
Carl Friedrich Bolz-Tereick
refactor the int_tag/untag optimization to fit the new style
Carl Friedrich Bolz-Tereick
can only untag odd ints
Carl Friedrich Bolz-Tereick
merge default (breaks some things, will fix in the next commit)
Carl Friedrich Bolz-Tereick
move an ll_assert around: cast_ptr_to_int *can* be used on an even pointer (to check whether it is tagged). however, int_untag should really only be used on odd numbers.
Carl Friedrich Bolz-Tereick
when the optimizer sees an int_tag operation, it can later remove the int_and(x, 1) operation because it knows the int is tagged.
Carl Friedrich Bolz-Tereick
use int_untag for untagging too (duh)
Carl Friedrich Bolz-Tereick
make tagged instances use the new operations as well
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
those are also not needed
Carl Friedrich Bolz-Tereick
make all optimizeopt tests pass
Carl Friedrich Bolz-Tereick
woops
Carl Friedrich Bolz-Tereick
(arigo, cfbolz): implement int_tag, int_tag_ovf and int_untag in the x86 backend
Carl Friedrich Bolz-Tereick
introduce an no-overflow-check variant int_tag for when the bounds-optimizer finds out that something cannot overflow.
Carl Friedrich Bolz-Tereick
rename the operation to int_tag_ovf
Carl Friedrich Bolz-Tereick
check that operations on untagged integers get their overflow checks removed
Carl Friedrich Bolz-Tereick
add a more precise .mul operation on integer bounds.
Carl Friedrich Bolz-Tereick
each the optimizer that int_tag and int_untag are each others opposites
Carl Friedrich Bolz-Tereick
introduce int_tag (which can overflow) and int_untag
Carl Friedrich Bolz-Tereick
a branch where to make int tagging and untagging explicit operations