summaryrefslogtreecommitdiffstats
path: root/Tools/cases_generator
Commit message (Collapse)AuthorAgeFilesLines
* [3.13] gh-133412: amend docs for the `inst` definition (GH-133708) (#133730)Miss Islington (bot)2025-05-091-1/+1
| | | | | | | | gh-133412: amend docs for the `inst` definition (GH-133708) The `stack_effect` is incorrectly documented as being allowed to be optional. (cherry picked from commit f77dac66e1867cfdf6f7549822dd64416f6063bc) Co-authored-by: Nybblista <170842536+nybblista@users.noreply.github.com>
* [3.13] Replace `strict_concatenate = True` with `extra_checks = True` ↵Miss Islington (bot)2025-01-251-1/+1
| | | | | | | | (GH-126391) (#129286) Replace `strict_concatenate = True` with `extra_checks = True` (GH-126391) (cherry picked from commit cc4f0a27704ba1401bd66931f5234be9c6b92ba5) Co-authored-by: sobolevn <mail@sobolevn.me>
* [3.13] GH-122155: Fix cases generator to correctly compute 'peek' offset for ↵Mark Shannon2024-07-263-6/+17
| | | | error handling (GH-122158) (GH-122174)
* gh-118335: Configure Tier 2 interpreter at build time (#118339)Guido van Rossum2024-05-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | The code for Tier 2 is now only compiled when configured with `--enable-experimental-jit[=yes|interpreter]`. We drop support for `PYTHON_UOPS` and -`Xuops`, but you can disable the interpreter or JIT at runtime by setting `PYTHON_JIT=0`. You can also build it without enabling it by default using `--enable-experimental-jit=yes-off`; enable with `PYTHON_JIT=1`. On Windows, the `build.bat` script supports `--experimental-jit`, `--experimental-jit-off`, `--experimental-interpreter`. In the C code, `_Py_JIT` is defined as before when the JIT is enabled; the new variable `_Py_TIER2` is defined when the JIT *or* the interpreter is enabled. It is actually a bitmask: 1: JIT; 2: default-off; 4: interpreter.
* gh-112075: Make instance attributes stored in inline "dict" thread safe ↵Dino Viehland2024-04-221-0/+1
| | | | | (#114742) Make instance attributes stored in inline "dict" thread safe on free-threaded builds
* GH-115419: Improve list of escaping functions (GH-118054)Mark Shannon2024-04-191-0/+10
|
* Cases generator: Remove type_prop and passthrough (#117614)Ken Jin2024-04-072-11/+0
|
* GH-117457: Correct pystats uop "miss" counts (GH-117477)Michael Droettboom2024-04-041-2/+8
|
* GH-115776: Embed the values array into the object, for "normal" Python ↵Mark Shannon2024-04-021-4/+3
| | | | objects. (GH-116115)
* gh-117323: Make `cell` thread-safe in free-threaded builds (#117330)Sam Gross2024-03-291-2/+3
| | | Use critical sections to lock around accesses to cell contents. The critical sections are no-ops in the default (with GIL) build.
* GH-116422: Tier2 hot/cold splitting (GH-116813)Mark Shannon2024-03-265-37/+102
| | | | | Splits the "cold" path, deopts and exits, from the "hot" path, reducing the size of most jitted instructions, at the cost of slower exits.
* gh-115419: Change default sym to not_null (GH-116562)Ken Jin2024-03-131-2/+2
|
* GH-116596: Better determination of escaping uops. (GH-116597)Mark Shannon2024-03-111-0/+16
|
* gh-116000: Make optimizer_generator.py work without any arguments (#116470)Kirill Podoprigora2024-03-071-5/+8
|
* gh-115999: Disable the specializing adaptive interpreter in free-threaded ↵Brett Simmers2024-03-011-0/+5
| | | | | builds (#116013) For now, disable all specialization when the GIL might be disabled.
* gh-116088: Insert bottom checks after all sym_set_...() calls (#116089)Guido van Rossum2024-02-291-4/+0
| | | | | | | | | This changes the `sym_set_...()` functions to return a `bool` which is `false` when the symbol is `bottom` after the operation. All calls to such functions now check this result and go to `hit_bottom`, a special error label that prints a different message and then reports that it wasn't able to optimize the trace. No executor will be produced in this case.
* gh-115816: Generate calls to sym_new_const() etc. without _Py_uop prefix ↵Guido van Rossum2024-02-291-4/+4
| | | | | | | | | (#116077) This was left behind by GH-115987. Basically a lot of diffs like this: ``` - res = _Py_uop_sym_new_unknown(ctx); + res = sym_new_unknown(ctx); ```
* GH-115816: Assorted naming and formatting changes to improve ↵Mark Shannon2024-02-271-3/+3
| | | | | | | maintainability. (GH-115987) * Rename _Py_UOpsAbstractInterpContext to _Py_UOpsContext and _Py_UOpsSymType to _Py_UopsSymbol. * #define shortened form of _Py_uop_... names for improved readability.
* GH-115816: Make tier2 optimizer symbols testable, and add a few tests. ↵Mark Shannon2024-02-271-3/+3
| | | | (GH-115953)
* Rename tier 2 redundancy eliminator to optimizer (#115888)Guido van Rossum2024-02-262-8/+8
| | | | The original name is just too much of a mouthful.
* gh-115778: Add `tierN` annotation for instruction definitions (#115815)Kirill Podoprigora2024-02-238-10/+20
| | | | | This replaces the old `TIER_{ONE,TWO}_ONLY` macros. Note that `specialized` implies `tier1`. Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
* GH-115457: Support splitting and replication of micro ops. (GH-115558)Mark Shannon2024-02-2010-36/+174
|
* GH-112354: Initial implementation of warm up on exits and trace-stitching ↵Mark Shannon2024-02-204-5/+37
| | | | (GH-114142)
* gh-114058: Foundations of the Tier2 redundancy eliminator (GH-115085)Ken Jin2024-02-136-52/+248
| | | | | | | --------- Co-authored-by: Mark Shannon <9448417+markshannon@users.noreply.github.com> Co-authored-by: Jules <57632293+JuliaPoo@users.noreply.github.com> Co-authored-by: Guido van Rossum <gvanrossum@users.noreply.github.com>
* ``Tools/cases_generator``: Fix typos and incorrect comments. (#114892)Kirill Podoprigora2024-02-034-6/+6
|
* Update outdated info in ``Tools/cases_generator/README.md`` (#114844)Kirill Podoprigora2024-02-011-7/+21
|
* GH-112354: `_GUARD_IS_TRUE_POP` side-exits to target the next instruction, ↵Mark Shannon2024-01-154-11/+12
| | | | not themselves. (GH-114078)
* gh-113710: Add types to the interpreter DSL (#113711)Ken Jin2024-01-127-30/+131
| | | | Co-authored-by: Jules <57632293+JuliaPoo@users.noreply.github.com> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
* GH-111485: Delete the old generator code. (GH-113321)Mark Shannon2023-12-219-2625/+102
|
* GH-111485: Fix DEFAULT_OUTPUT in opcode_metadata_generator.py (#113324)Guido van Rossum2023-12-201-1/+1
|
* GH-111485: Generate `TARGET` table for computed goto dispatch. (GH-113319)Mark Shannon2023-12-202-1/+54
|
* GH-111485: Generate instruction and uop metadata (GH-113287)Mark Shannon2023-12-2012-174/+849
|
* GH-111485: Break up instructions with unused cache entries into component ↵Mark Shannon2023-12-183-8/+27
| | | | micro-ops (GH-113169)
* GH-111485: Test the new cases generator (GH-113252)Mark Shannon2023-12-185-10/+24
|
* GH-111485: Sort metadata tables for easier checking of future diffs (GH-113101)Mark Shannon2023-12-141-6/+8
|
* Fix whitespace in generated codeMark Shannon2023-12-131-3/+4
|
* GH-111485: Factor out tier 2 code generation from the rest of the ↵Mark Shannon2023-12-128-240/+494
| | | | interpreter code generator (GH-112968)
* GH-111485: Factor out generation of uop IDs from cases generator. (GH-112877)Mark Shannon2023-12-114-2/+95
|
* GH-111485: Factor out opcode ID generator from the main cases generator. ↵Mark Shannon2023-12-085-67/+196
| | | | (GH-112831)
* GH-111485: Separate out parsing, analysis and code-gen phases of tier 1 code ↵Mark Shannon2023-12-079-6/+1129
| | | | generator (GH-112299)
* gh-112519: Make it possible to specify instruction flags for pseudo ↵Irit Katriel2023-11-302-4/+30
| | | | instructions in bytecodes.c (#112520)
* GH-111485: Sort cases in the case generator output (GH-112315)Mark Shannon2023-11-221-1/+5
|
* gh-112287: Speed up Tier 2 (uop) interpreter a little (#112286)Guido van Rossum2023-11-202-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | This makes the Tier 2 interpreter a little faster. I calculated by about 3%, though I hesitate to claim an exact number. This starts by doubling the trace size limit (to 512), making it more likely that loops fit in a trace. The rest of the approach is to only load `oparg` and `operand` in cases that use them. The code generator know when these are used. For `oparg`, it will conditionally emit ``` oparg = CURRENT_OPARG(); ``` at the top of the case block. (The `oparg` variable may be referenced multiple times by the instructions code block, so it must be in a variable.) For `operand`, it will use `CURRENT_OPERAND()` directly instead of referencing the `operand` variable, which no longer exists. (There is only one place where this will be used.)
* gh-110319: Assert type_version != 0 before using it (#112226)Guido van Rossum2023-11-181-2/+2
| | | | | | - Ensure that `assert(type_version != 0);` always comes *before* using `type_version` Also: - In cases_generator, rename `-v` to from `--verbose` to `--viable`
* A few more cases_generator cleanups (#112220)Guido van Rossum2023-11-172-2/+2
|
* gh-106529: Cleanups split off gh-112134 (#112214)Guido van Rossum2023-11-172-6/+5
| | | | | | | - Double max trace size to 256 - Add a dependency on executor_cases.c.h for ceval.o - Mark `_SPECIALIZE_UNPACK_SEQUENCE` as `TIER_ONE_ONLY` - Add debug output back showing the optimized trace - Bunch of cleanups to Tools/cases_generator/
* GH-111848: Set the IP when de-optimizing (GH-112065)Mark Shannon2023-11-151-6/+29
| | | | | | | | | | | | * Replace jumps with deopts in tier 2 * Fewer special cases of uop names * Add target field to uop IR * Remove more redundant SET_IP and _CHECK_VALIDITY micro-ops * Extend whitelist of non-escaping API functions.
* GH-111520: Add back the operand local (GH-111813)Brandt Bucher2023-11-141-1/+1
|
* GH-109369: Exit tier 2 if executor is invalid (GH-111657)Mark Shannon2023-11-092-1/+55
|
* GH-111848: Tidy up tier 2 handling of FOR_ITER specialization by using ↵Mark Shannon2023-11-082-2/+2
| | | | DEOPT_IF instead of jumps. (GH-111849)