Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Backed out changeset f1c2880a6b49 | Carl Friedrich Bolz-Tereick | 2021-02-15 | 1 | -80/+0 |
| | | | | (some test fails weirdly, trying to see what caused it) | ||||
* | better reasoning about upper bounds of or and xor, and about lower bounds of or | Carl Friedrich Bolz-Tereick | 2020-04-29 | 1 | -0/+80 |
| | |||||
* | make the JIT reason about int_invert and int_neg | Carl Friedrich Bolz-Tereick | 2020-04-26 | 1 | -0/+78 |
| | |||||
* | optimize chains of longlong2float(float2longlong(x)) and vice versa | Carl Friedrich Bolz-Tereick | 2021-01-31 | 1 | -0/+22 |
| | |||||
* | Issue #3297 | Armin Rigo | 2020-09-10 | 1 | -0/+158 |
| | | | | | | | A corner case that produces a bogus loop containing getarrayitem_gc with index -1, or with whatever index is given in the initial value of 'pos'. Negative values would segfault; positive values would allocate '8 * pos' bytes of memory however large the value is. Try to fix all these cases. | ||||
* | Disable the work done on optimize_UINT_LT & friends, with explanation | Armin Rigo | 2020-09-03 | 1 | -0/+14 |
| | |||||
* | Some intbound checking around the 'uint' comparisons | Armin Rigo | 2020-09-02 | 1 | -0/+326 |
| | |||||
* | Fixes for 560856d4f545: need to add an ARRAYMOVE operation in the jit, similar | Armin Rigo | 2020-06-25 | 1 | -0/+15 |
| | | | | to ARRAYCOPY | ||||
* | Revert 18443d3a74d5: the branch int-test-is-zero is maybe a nice idea | Armin Rigo | 2019-11-17 | 1 | -30/+0 |
| | | | | | | | | | but it doesn't really work. E.g. when we write "if a & 3:" at app-level then the value "a & 3" is anyway passed around as failargs. So this branch makes the CPU compute twice this value, basically. This is an almost-complete-revert: I'm keeping the new TEST_xx instructions in rx86.py because the next time they're needed we'll already have them. | ||||
* | Generate more compact code for bit tests using the TEST instruction: | Armin Rigo | 2019-11-16 | 1 | -0/+30 |
| | | | | | | | | | | | | i1 = int_and(i0, 7); i2 = int_is_zero(i1); guard_true(i2) => i2 = int_test_is_zero(i0, 7); guard_true(i2) The more compact version doesn't need to allocate a register, copy a value there, AND a constant, and then CMP the result with zero. Instead a single TEST instruction suffices. | ||||
* | kill BaseTest._do_optimize_loop() | Ronan Lamy | 2019-05-17 | 1 | -2/+3 |
| | |||||
* | simplify metainterp_sd creation in optimizeopt tests | Ronan Lamy | 2019-05-15 | 1 | -2/+2 |
| | |||||
* | LoopCompileData.optimize() is only called with unroll=True; simplify ↵ | Ronan Lamy | 2019-04-13 | 1 | -3/+1 |
| | | | | optimize() and optimize_trace() | ||||
* | Pull use_unrolling() call out of optimize_trace() | Ronan Lamy | 2019-04-13 | 1 | -2/+3 |
| | |||||
* | Simplify LLtypeMixin | Ronan Lamy | 2019-04-11 | 1 | -1/+6 |
| | |||||
* | code cleanup in optimizeopt, simplify test class structure | Ronan Lamy | 2019-04-10 | 1 | -22/+13 |
| | |||||
* | Redo d7e235d0e787 with the missing get_box_replacement() calls | Armin Rigo | 2018-12-06 | 1 | -1/+0 |
| | |||||
* | It turns out re-enabling this optimization shows a failure in the metainterp | Armin Rigo | 2018-12-05 | 1 | -0/+1 |
| | | | | tests. Need to investigate (but later). | ||||
* | Re-enable this intbounds optimization. Found that tracking resops that are | Armin Rigo | 2018-12-05 | 1 | -1/+0 |
| | | | | | *not* in the current loop is hard and error-prone; instead, track resops that *are* in the current loop, and it's OK if we occasionally miss some. | ||||
* | fix an oversight: also deserialize bridge optimizer knowledge for bridges that | Carl Friedrich Bolz-Tereick | 2018-02-22 | 1 | -2/+2 |
| | | | | | end with finish. Previously only those that used unroll (ie those that end with a jump) did that, which made finish bridges less good. | ||||
* | some passing cases, and comments how they work | Carl Friedrich Bolz-Tereick | 2017-10-11 | 1 | -0/+49 |
| | |||||
* | optimize this sequence: | Carl Friedrich Bolz-Tereick | 2017-08-28 | 1 | -1/+16 |
| | | | | | | | | | i2 = int_is_zero(i0) guard_false(i2) i1 = int_is_true(i0) guard_true(i1) (happens quite often in rpython list code, it seems) | ||||
* | a small improvement to getarrayitem caching | Carl Friedrich Bolz | 2017-08-02 | 1 | -0/+40 |
| | | | | | when invalidating getarrayitem caches due to a setarrayitem, don't invalidate items that are at other indexes. | ||||
* | Another case where we read .upper without checking .has_upper | Armin Rigo | 2017-04-04 | 1 | -0/+45 |
| | |||||
* | Issue #2528: test and fix for int_and() propagating wrong bounds | Armin Rigo | 2017-04-04 | 1 | -0/+20 |
| | |||||
* | I think we no longer need the 'create_ops' flag. It was added as | Armin Rigo | 2017-02-25 | 1 | -0/+15 |
| | | | | | | | replacement for a limitation of the previous state of the world, but there is no reason to keep that logic. Added a test that shows better results without it (it's a case I've seen in pypy, and the removed 'strlen' means a guard afterwards will be dropped) | ||||
* | Propagate debug.ll_assert_not_none() through the JIT, using the same | Armin Rigo | 2016-12-17 | 1 | -0/+13 |
| | | | | | technique as jit.record_exact_class(). If we use it a bit inside PyPy it could remove a good number of guard_nonnull or guard_nonnull_class. | ||||
* | Reintroduce some JIT support for int_mod(). Add rarithmetic.int_c_mod(). | Armin Rigo | 2016-06-08 | 1 | -0/+19 |
| | |||||
* | Reintroduce some JIT support for int_floordiv() in a way that makes | Armin Rigo | 2016-06-08 | 1 | -0/+41 |
| | | | | | it at least half efficient. Add rarithmetic.int_c_div() as an explicit interface. | ||||
* | Handle modulo-by-constant too | Armin Rigo | 2016-05-27 | 1 | -13/+16 |
| | |||||
* | Division by a constant: can be replaced with some carefully-computed | Armin Rigo | 2016-05-27 | 1 | -6/+10 |
| | | | | multiplication-and-keep-the-high-word. | ||||
* | tweaks | Armin Rigo | 2016-05-27 | 1 | -15/+0 |
| | |||||
* | Re-enable some optimizations for int_py_div and int_py_mod | Armin Rigo | 2016-05-26 | 1 | -15/+41 |
| | |||||
* | Finish 1ad01ba1173b for the front-end | Armin Rigo | 2016-05-10 | 1 | -0/+3 |
| | |||||
* | fix fix fix | Armin Rigo | 2016-05-08 | 1 | -62/+31 |
| | |||||
* | fix more tests | fijal | 2016-03-25 | 1 | -1/+1 |
| | |||||
* | whack enough tests to pass | fijal | 2016-03-23 | 1 | -4/+2 |
| | |||||
* | fix some tests | fijal | 2016-03-21 | 1 | -1/+1 |
| | |||||
* | start fighting with unrolling, make most of the tests pass in ↵ | fijal | 2016-03-07 | 1 | -3/+1 |
| | | | | test_optimizeopt by simplifying what CompileData stores | ||||
* | pass the first tests of optimizeopt, yay! | fijal | 2016-03-04 | 1 | -1/+1 |
| | |||||
* | write snapshot iterator | fijal | 2016-03-04 | 1 | -63/+8 |
| | |||||
* | merge default | fijal | 2016-03-01 | 1 | -1/+1 |
|\ | |||||
| * | fix some tests | fijal | 2016-02-23 | 1 | -1/+1 |
| | | |||||
* | | merge default | fijal | 2016-02-14 | 1 | -435/+23 |
|\| | |||||
| * | Merge with default | Spenser Andrew Bauman | 2016-01-08 | 1 | -419/+8 |
| |\ | |||||
| | * | review the skips in test_optimizebasic | Carl Friedrich Bolz | 2016-01-08 | 1 | -419/+8 |
| | | | | | | | | | | | | | | | | | | - killed the really old tests that relied on optimizefindnode machinery - fixed and enabled a few - the remaining ones look actually useful | ||||
| * | | Initial merge attempt | Spenser Andrew Bauman | 2015-12-22 | 1 | -9/+13 |
| |\| | |||||
| * | | merge default | Carl Friedrich Bolz | 2015-11-23 | 1 | -1/+1 |
| |\ \ | |||||
| * | | | Remove GETFIELD_PURE_* operations from the JIT | Spenser Bauman | 2015-10-16 | 1 | -6/+6 |
| | | | | | | | | | | | | | | | | - That information is now entirely encoded in the field descriptor | ||||
| * | | | fix some more test cases | Spenser Bauman | 2015-10-08 | 1 | -2/+2 |
| | | | |