• Home
Name Date Size #Lines LOC

..--

fill-const-array/22-Oct-2025-125102

verify_aot_tests/22-Oct-2025-124105

CMakeLists.txtD22-Oct-202513 KiB260226

README.mdD22-Oct-20255.3 KiB6254

aot.paD22-Oct-20252.2 KiB9980

aot_cha.paD22-Oct-20253.7 KiB8672

aot_cha_panda_files.paD22-Oct-20252.5 KiB6656

aot_cha_vcalls.paD22-Oct-20255.9 KiB130108

basics_aot.paD22-Oct-20251.1 KiB3730

boot_an_location.paD22-Oct-20251.6 KiB3228

cast_bool.paD22-Oct-20252 KiB10287

check_verifier.paD22-Oct-20251.4 KiB5951

checkcast_elimination.paD22-Oct-20254.3 KiB208183

checkcast_elimination_test.paD22-Oct-20255 KiB238196

checkcast_nullcheck.paD22-Oct-20251.3 KiB5246

checker.rbD22-Oct-202522.7 KiB789637

checker_tests.rbD22-Oct-20252 KiB7859

cleanup_sso.paD22-Oct-20251.6 KiB5349

combine_shifts.paD22-Oct-20254.3 KiB213189

compare_lenarray_with_zero.paD22-Oct-20251.8 KiB7467

compare_obj.paD22-Oct-20252.6 KiB112105

compiler_to_interpreter.paD22-Oct-20252.3 KiB7258

const-array-vectorization.paD22-Oct-2025946 2722

const_array_test.paD22-Oct-20253.4 KiB153144

cross_peephole.paD22-Oct-20252.2 KiB7161

deoptimize_compare.paD22-Oct-20251.7 KiB6359

disable_intrinsics.paD22-Oct-20253.6 KiB10495

disasm_and_log_demo.paD22-Oct-2025842 2219

float_intrinsic.paD22-Oct-20252.8 KiB10996

float_zero.paD22-Oct-20251.3 KiB4036

force_an.paD22-Oct-2025989 2724

force_unresolved_option.paD22-Oct-20252.7 KiB9285

ifcvt.paD22-Oct-20255.1 KiB167156

ifcvt_float.paD22-Oct-20252.4 KiB10196

implicit_nullcheck_tests.paD22-Oct-20258.6 KiB325284

initobj_osr.paD22-Oct-20251.5 KiB6247

inline-external-constructor.paD22-Oct-2025958 3124

inline.paD22-Oct-202527.5 KiB857772

inline_external.paD22-Oct-20252.3 KiB11597

inline_ic.paD22-Oct-202518.4 KiB565496

inline_small.paD22-Oct-20254.4 KiB149137

irreducible_loop_test.paD22-Oct-20251.5 KiB6553

isinstance_elimination.paD22-Oct-20252.6 KiB125108

isinstance_elimination_test.paD22-Oct-20251.1 KiB4438

isinstance_nullcheck.paD22-Oct-20251.2 KiB4338

ldarray_obj.paD22-Oct-20251.2 KiB4236

llvm_devirt_external.paD22-Oct-20254 KiB10394

llvmaot-broken-ir.paD22-Oct-20251.4 KiB3933

llvmaot-gc-int-vs-ptr.paD22-Oct-20251.8 KiB5247

llvmaot-gc-liveness.paD22-Oct-20251.6 KiB5348

llvmaot-inlines-from-split-module.paD22-Oct-20251 KiB3226

llvmaot-optlevel.paD22-Oct-20251.1 KiB4743

llvmaot-tracking.paD22-Oct-20251,015 3229

loop-unroll-constant.paD22-Oct-20253.6 KiB132117

lowering_test.paD22-Oct-20251.6 KiB6458

memory-barrier.paD22-Oct-2025901 3125

memory-coalescing.paD22-Oct-20251.9 KiB6357

memory-coalescing1.paD22-Oct-20252.1 KiB7065

memset.paD22-Oct-20251 KiB3531

memset_loop_idiom.paD22-Oct-20253.1 KiB130121

monitor.paD22-Oct-20252.2 KiB8071

move_nullcheck_out_of_loop.paD22-Oct-20253.2 KiB131119

osr.paD22-Oct-20252.3 KiB113100

osr_irtoc_test.paD22-Oct-20255.7 KiB329307

parameter_test.paD22-Oct-20253 KiB147138

ref_check_elim_test.paD22-Oct-20252.2 KiB7669

remove_redundant_checks.paD22-Oct-20252 KiB7060

scalar_replacement.paD22-Oct-20251.2 KiB3733

source_line.paD22-Oct-20252.3 KiB8774

ss_ir_builder.paD22-Oct-20251.5 KiB6250

stack_overflow.paD22-Oct-20251.7 KiB5846

tlab_test.paD22-Oct-20255.7 KiB204181

vcalls_aux.paD22-Oct-20251.4 KiB6555

virtual_to_static.paD22-Oct-20252 KiB7668

xor_to_compare_to_xor.paD22-Oct-20251.4 KiB4743

zero_const_in_save_state.paD22-Oct-20251.9 KiB6960

README.md

1# Checked Tests
2
3Checked tests is the tests that have additional functionality to check result of the test being run.
4For example, check some event was raised or some IR instruction is appeared after specific optimization.
5
6Each checker's command should start with special token (`'#!'` for panda assembly language, `//!` for other languages) at the
7beginning of the line.
8
9Allowed multiple checkers in a single file. Each checker starts with command `CHECKER` and ends with line without
10command token at the zero position.
11
12Each command is a valid code in the `ruby` language.
13
14## List of commands
15
16* **CHECKER** (description: string) begin new Checker with specified description
17* **RUN** run panda application, following named arguments are allowed:
18    - *options: string* - additional options for Panda VM
19    - *entry: string* - entry point, default - `_GLOBAL::main`
20    - *result: int* - expected value to be returned by the `panda` application
21    - *abort: int* - expected terminal signal
22    - *env: string* - environment variables setup string to be used as execution command prefix
23    - *force_jit: bool* - run jit compilation for every executed method
24    - *force_profiling: bool* - enables profdata collection for every interpreter-executed method
25    - *pgo_emit_profdata: bool* - enables on-disk generating for profile data to be used in PGO
26* **RUN_PAOC** run paoc application on the compiled panda file. Output panda file will be passed to the following panda
27    run. Thus, `RUN_PAOC` command must be placed before `RUN` command. Following options are allowed:
28    - *options: string* - additional options for paoc
29    - *bool: bool* - enables boot output
30    - *result: int* - expected value to be returned by the `paoc`
31    - *abort: int* - expected terminal signal
32    - *env: string* - environment variables setup string to be used as execution command prefix
33    - *inputs: string* - list of panda files to compile
34    - *output: string* - name of AOT file to be generated (incompatible to subsequent `RUN` call for now)
35    - *pgo_use_profdata: bool* - usese profile data for PGO. Should be used after `RUN` call with `pgo_emit_profdata` enabled
36* **RUN_PGO_PROF** - runs panda application with forces profiling and PGO profdata emitting. Output profdata will be passed to the following AOT run that use PGO. Syntax sugar for `RUN` command with `pgo_emit_profdata` enabled
37* **RUN_PGO_PAOC** - runs paoc to compile panda file using collected profdata. Should be run after `RUN` with `pgo_emit_profdata` enabled. Syntax sugar for `RUN_PAOC` call
38* **RUN_LLVM** - runs paoc application on the compiled panda file with LLVM AOT backend. Requires LLVM support at `paoc` and passing `--with-llvm` to `checker.rb`
39* **RUN_AOT** - runs paoc application on the compiled panda file with various AOT modes. Currently, command creates separate checkes for `RUN_PAOC` and `RUN_LLVM` backends
40* **RUN_BCO** - runs frontend with bytecode optimizer
41* **EVENT** (event: pattern) search event within all events
42* **EVENT_NEXT** (event: pattern) ordered search event, i.e. search from position of the last founded event
43* **EVENT_NOT** (event: pattern) ensure event is not occurred
44* **EVENT_NEXT_NOT** (event: pattern) ensure event is not occurred after current position
45* **METHOD** (name: string) start check of specified method, all following checks that require specific method will use method specified by this command
46* **PASS_AFTER** (pass_name: string) specify pass after which IR commands should operate
47* **PASS_BEFORE** (pass_name: string) select pass that is right before the specified one
48* **INST** (inst: pattern) search specified instruction in the ir dump file specified by commands `METHOD` and `PASS_AFTER`
49* **INST_NOT** (inst: pattern) equal to `NOT INST`, i.e. check that instruction is not exist
50* **INST_NEXT_NOT** (event: pattern) ensure instruction is not occurred after current position
51* **IR_COUNT** (inst: string) search specified phrase and counts the number in the ir dump file specified by commands `METHOD` and `PASS_AFTER`, returns the value
52* **BLOCK_COUNT** () equal to `IR_COUNT ("BB ")`, i.e. search specified basic blocks and counts the number
53* **TRUE** (condition) ensure the condition is correct
54* **SKIP_IF** (condition) if condition is `true`, skip all commands from that to end of this checker
55* **ASM_METHOD** (name: string) select a specified method in disasm file, next "ASM*" checks will be applied only for this method's code.
56* **ASM_INST** (inst: pattern) select a specified instruction in disasm file, next "ASM*" checks will be applied only for this instruction's code.
57* **ASM/ASM_NEXT/ASM_NOT/ASM_NEXT_NOT** (inst: pattern) same as other similar checks, but search only in a current disasm scope, defined by `ASM_METHOD` or `ASM_INST`.
58If none of these checks were specified, then search will be applied in the whole disasm file.
59* **IN_BLOCK** (block: pattern) limits the search for instructions to one block. The block is defined by lines "props: ..." and "succs: ...". The search pattern is found in the first line "props: rest\_of\_line\_for\_matching". You can define only one block for searching and you can't return to the search in the entire method after in the currently analized compiler pass.
60
61*pattern* can be a string(surrounded by quotes) or regex(surrounded by slashes): string - `"SearchPattern"`, regex - `/SearchPattern/`.
62