Name Date Size

..25-Oct-20244 KiB

aot.paH A D25-Oct-20242.2 KiB

aot_cha.paH A D25-Oct-20243.7 KiB

aot_cha_panda_files.paH A D25-Oct-20242.5 KiB

aot_cha_vcalls.paH A D25-Oct-20245.9 KiB

basics_aot.paH A D25-Oct-20241.1 KiB

cast_bool.paH A D25-Oct-20242 KiB

check_verifier.paH A D25-Oct-20241.4 KiB

checkcast_elimination.paH A D25-Oct-20244.3 KiB

checkcast_elimination_test.paH A D25-Oct-20245 KiB

checkcast_nullcheck.paH A D25-Oct-20241.3 KiB

checker.rbH A D25-Oct-202420 KiB

checker_tests.rbH A D25-Oct-20242 KiB

cleanup_sso.paH A D25-Oct-20241.6 KiB

CMakeLists.txtH A D25-Oct-202412.7 KiB

combine_shifts.paH A D25-Oct-20244.3 KiB

compare_lenarray_with_zero.paH A D25-Oct-20241.8 KiB

compare_obj.paH A D25-Oct-20242.6 KiB

compiler_to_interpreter.paH A D25-Oct-20242.3 KiB

const-array-vectorization.paH A D25-Oct-2024946

const_array_test.paH A D25-Oct-20243.4 KiB

cross_peephole.paH A D25-Oct-20242.2 KiB

deoptimize_compare.paH A D25-Oct-20241.7 KiB

disable_intrinsics.paH A D25-Oct-20243.6 KiB

disasm_and_log_demo.paH A D25-Oct-2024842

fill-const-array/H25-Oct-20244 KiB

float_intrinsic.paH A D25-Oct-20242.8 KiB

float_zero.paH A D25-Oct-20241.3 KiB

force_an.paH A D25-Oct-2024989

force_unresolved_option.paH A D25-Oct-20242.7 KiB

ifcvt.paH A D25-Oct-20244.4 KiB

ifcvt_float.paH A D25-Oct-20242.4 KiB

implicit_nullcheck_tests.paH A D25-Oct-20248.6 KiB

initobj_osr.paH A D25-Oct-20241.5 KiB

inline-external-constructor.paH A D25-Oct-2024958

inline.paH A D25-Oct-202427.5 KiB

inline_external.paH A D25-Oct-20242.3 KiB

inline_ic.paH A D25-Oct-202412.7 KiB

inline_small.paH A D25-Oct-20243.5 KiB

irreducible_loop_test.paH A D25-Oct-20241.5 KiB

isinstance_elimination.paH A D25-Oct-20242.6 KiB

isinstance_elimination_test.paH A D25-Oct-20241.1 KiB

isinstance_nullcheck.paH A D25-Oct-20241.2 KiB

ldarray_obj.paH A D25-Oct-20241.2 KiB

llvm_devirt_external.paH A D25-Oct-20244 KiB

llvmaot-broken-ir.paH A D25-Oct-20241.4 KiB

llvmaot-gc-int-vs-ptr.paH A D25-Oct-20241.8 KiB

llvmaot-gc-liveness.paH A D25-Oct-20241.6 KiB

llvmaot-inlines-from-split-module.paH A D25-Oct-20241 KiB

llvmaot-optlevel.paH A D25-Oct-20241.1 KiB

llvmaot-tracking.paH A D25-Oct-20241,015

loop-unroll-constant.paH A D25-Oct-20243.6 KiB

lowering_test.paH A D25-Oct-20241.6 KiB

memory-barrier.paH A D25-Oct-2024901

memory-coalescing.paH A D25-Oct-20241.9 KiB

memory-coalescing1.paH A D25-Oct-20242.1 KiB

memset.paH A D25-Oct-20241 KiB

memset_loop_idiom.paH A D25-Oct-20243.1 KiB

monitor.paH A D25-Oct-20242.2 KiB

move_nullcheck_out_of_loop.paH A D25-Oct-20243.2 KiB

osr.paH A D25-Oct-20242.3 KiB

osr_irtoc_test.paH A D25-Oct-20245.7 KiB

parameter_test.paH A D25-Oct-20243 KiB

README.mdH A D25-Oct-20243.6 KiB

ref_check_elim_test.paH A D25-Oct-20242.2 KiB

remove_redundant_checks.paH A D25-Oct-20242 KiB

scalar_replacement.paH A D25-Oct-20241.2 KiB

source_line.paH A D25-Oct-20242.3 KiB

ss_ir_builder.paH A D25-Oct-20241.5 KiB

stack_overflow.paH A D25-Oct-20241.7 KiB

tlab_test.paH A D25-Oct-20245.7 KiB

vcalls_aux.paH A D25-Oct-20241.4 KiB

verify_aot_tests/H25-Oct-20244 KiB

virtual_to_static.paH A D25-Oct-20242 KiB

xor_to_compare_to_xor.paH A D25-Oct-20241.4 KiB

zero_const_in_save_state.paH A D25-Oct-20241.9 KiB

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    - *force_jit: bool* - run jit compilation for every executed method
19    - *options: string* - additional options for Panda VM
20    - *entry: string* - entry point, default - `_GLOBAL::main`
21    - *result: int* - expected value to be returned by the `panda` application
22    - *abort: int* - expected terminal signal
23* **RUN_PAOC** run paoc application on the compiled panda file. Output panda file will be passed to the following panda
24    run. Thus, `RUN_PAOC` command must be placed before `RUN` command.
25* **EVENT** (event: pattern) search event within all events
26* **EVENT_NEXT** (event: pattern) ordered search event, i.e. search from position of the last founded event
27* **EVENT_NOT** (event: pattern) ensure event is not occurred
28* **EVENT_NEXT_NOT** (event: pattern) ensure event is not occurred after current position
29* **METHOD** (name: string) start check of specified method, all following checks that require specific method will use method specified by this command
30* **PASS_AFTER** (pass_name: string) specify pass after which IR commands should operate
31* **PASS_BEFORE** (pass_name: string) select pass that is right before the specified one
32* **INST** (inst: pattern) search specified instruction in the ir dump file specified by commands `METHOD` and `PASS_AFTER`
33* **INST_NOT** (inst: pattern) equal to `NOT INST`, i.e. check that instruction is not exist
34* **INST_NEXT_NOT** (event: pattern) ensure instruction is not occurred after current position
35* **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
36* **BLOCK_COUNT** () equal to `IR_COUNT ("BB ")`, i.e. search specified basic blocks and counts the number
37* **TRUE** (condition) ensure the condition is correct
38* **SKIP_IF** (condition) if condition is `true`, skip all commands from that to end of this checker
39* **ASM_METHOD** (name: string) select a specified method in disasm file, next "ASM*" checks will be applied only for this method's code.
40* **ASM_INST** (inst: pattern) select a specified instruction in disasm file, next "ASM*" checks will be applied only for this instruction's code.
41* **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`.
42If none of these checks were specified, then search will be applied in the whole disasm file.
43* **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.
44
45*pattern* can be a string(surrounded by quotes) or regex(surrounded by slashes): string - `"SearchPattern"`, regex - `/SearchPattern/`.
46