• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13# Test suite for Panda.
14
15# Targets for running separate suites:
16add_custom_target(cts-assembly COMMENT "Running compliance tests for Panda Assembly")
17add_custom_target(regression COMMENT "Running panda compiler regression tests")
18add_custom_target(cts-aot-tests COMMENT "Running panda aot tests")
19add_custom_target(cts-jit-tests COMMENT "Running panda jit-enforce tests")
20add_custom_target(irtoc-interpreter-tests COMMENT "Running irtoc interpreter tests")
21add_custom_target(irtoc-opcode-suite COMMENT "Running irtoc interpreter opcode test suite")
22
23add_dependencies(tests irtoc-interpreter-tests)
24add_dependencies(irtoc-interpreter-tests irtoc-opcode-suite)
25# TODO(maksenov): disable tests subdirectory for Windows build to remove this condition
26if(NOT PANDA_TARGET_AMD64 OR PANDA_TARGET_WINDOWS)
27  add_dependencies(tests cts-assembly regression)
28  add_subdirectory(cts-coverage-tool)
29else()
30  add_custom_target(verifier-tests COMMENT "Regression tests for verifier")
31  add_dependencies(tests cts-assembly regression cts-generator-build verifier-tests)
32  add_subdirectory(cts-coverage-tool)
33  add_subdirectory(cts-generator)
34endif()
35if (PANDA_TARGET_ARM64)
36  add_custom_target(ecmascript-tests COMMENT "Compiler tests for ECMAScript")
37  add_dependencies(tests ecmascript-tests)
38endif()
39
40if(PANDA_COMPILER_ENABLE)
41    add_subdirectory(checked)
42    add_dependencies(tests checked_tests)
43endif()
44
45# Add a single test run to the build tree.
46#
47# Usage:
48#
49#   panda_add_test_run(
50#       FILE <source>
51#       TARGET <target>
52#       [SUBDIR <subdir>]
53#       [EXPECTED_STDOUT <out_value>]
54#       [SEARCH_DEBUG_STDERR <msg_value>]
55#       [DEPENDS <dependency>...]
56#       [RUNTIME_OPTIONS <option>...]
57#       [COMPILER_OPTIONS <option>...]
58#       [GC_OPTIONS <option>]
59#       [ARGUMENTS <argument>...]
60#       [AOT_MODE TRUE|FALSE]
61#       [LANGUAGE_CONTEXT <context>]
62#   )
63#
64# Adds a test run target <target> with <source>
65#
66# Options:
67#
68# SUBDIR
69#   Subdirectory in the current binary directory that is used to store build artifacts.
70#   Full path to directory with artifacts: ${CMAKE_CURRENT_BINARY_DIR}/<subdir>/<target>-execute
71#
72# EXPECTED_STDOUT
73#   Excepted value of test's stdout
74#
75# SEARCH_DEBUG_STDERR
76#   Message which is expected to present in stderr output
77#
78# DEPENDS
79#   List of additional dependences (exclude assembler and interpreter)
80#
81# RUNTIME_OPTIONS
82#   Runtime options
83#
84# COMPILER_OPTIONS
85#   Options for compiler, given both to panda and paoc
86#
87# GC_OPTIONS
88#  Type of a gc
89#
90# ARGUMENTS
91#   List of arguments that will be passed to program's entry point
92#
93# AOT_MODE, LANGUAGE_CONTEXT
94#   See panda_add_asm_file
95function(panda_add_test_run)
96    set(prefix ARG)
97    set(singleValues FILE TARGET SUBDIR SEARCH_DEBUG_STDERR AOT_MODE LANGUAGE_CONTEXT GC_OPTIONS)
98    set(multiValues EXPECTED_STDOUT DEPENDS RUNTIME_OPTIONS COMPILER_OPTIONS ARGUMENTS PRLIMIT_OPTIONS)
99    cmake_parse_arguments(${prefix}
100                          "${noValues}"
101                          "${singleValues}"
102                          "${multiValues}"
103                          ${ARGN})
104
105    if (NOT DEFINED ARG_FILE)
106        message(FATAL_ERROR "Mandatory FILE argument is not defined.")
107    endif()
108
109    if (NOT DEFINED ARG_TARGET)
110        message(FATAL_ERROR "Mandatory TARGET argument is not defined.")
111    endif()
112
113    if (TARGET ARG_TARGET)
114        message(FATAL_ERROR "Target ${ARG_TARGET} is already defined.")
115    endif()
116
117    if(DEFINED ARG_GC_OPTIONS)
118        set(ARG_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}" "${ARG_GC_OPTIONS}")
119    endif()
120
121    set(output_file)
122    set(error_file)
123
124    panda_add_asm_file(
125        FILE ${ARG_FILE}
126        TARGET ${ARG_TARGET}-execute
127        SUBDIR "${ARG_SUBDIR}"
128        OUTPUT_FILE_VARIABLE output_file
129        ERROR_FILE_VARIABLE error_file
130        LANGUAGE_CONTEXT "${ARG_LANGUAGE_CONTEXT}"
131        AOT_MODE ${ARG_AOT_MODE}
132        DEPENDS "${ARG_DEPENDS}"
133        RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}"
134        COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
135        AOT_GC_OPTION "${ARG_GC_OPTIONS}"
136        ENTRY_ARGUMENTS "${ARG_ARGUMENTS}"
137        PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
138    )
139
140    add_custom_target(${ARG_TARGET} COMMENT "Running ${ARG_TARGET} test")
141    add_dependencies(${ARG_TARGET} ${ARG_TARGET}-execute)
142
143    if (DEFINED ARG_EXPECTED_STDOUT)
144        set(expected_output_file "${output_file}.expected")
145        file(WRITE "${expected_output_file}" "${ARG_EXPECTED_STDOUT}")
146
147        add_custom_target(${ARG_TARGET}-check-stdout
148                          COMMENT "Check ${ARG_TARGET} stdout"
149                          COMMAND ${CMAKE_COMMAND} -E compare_files "${output_file}" "${expected_output_file}"
150                          DEPENDS ${ARG_TARGET}-execute)
151
152        add_dependencies(${ARG_TARGET} ${ARG_TARGET}-check-stdout)
153    endif()
154
155    if (DEFINED ARG_SEARCH_DEBUG_STDERR AND NOT (CMAKE_BUILD_TYPE MATCHES Release))
156        # TODO: Drop 'grep' usage, there must be some way like:
157        #   file(READ "${error_file}" STDERR_AS_STRING)
158        #   string(FIND ${STDERR_AS_STRING} ${ARG_SEARCH_DEBUG_STDERR})
159        # but my cmake knowledge is not enough.
160
161        add_custom_target(${ARG_TARGET}-check-logmsg
162                          COMMENT "Check ${ARG_TARGET} log message"
163                          COMMAND grep "${ARG_SEARCH_DEBUG_STDERR}" ${error_file} >/dev/null
164                          DEPENDS ${ARG_TARGET}-execute)
165
166        add_dependencies(${ARG_TARGET} ${ARG_TARGET}-check-logmsg)
167    endif()
168
169endfunction()
170
171# Add a single test run for verifier to the build tree.
172#
173# Usage:
174#
175#   verifier_add_test_run(
176#       FILE <source>
177#       TARGET <target>
178#       [SUBDIR <subdir>]
179#       [EXPECTED_STDOUT <out_value>]
180#       [SEARCH_STDERR <msg_value>]
181#       [DEPENDS <dependency>...]
182#       [LANGUAGE_CONTEXT <context>]
183#   )
184#
185# Adds a test run target <target> with <source>
186#
187# Options:
188#
189# SUBDIR
190#   Subdirectory in the current binary directory that is used to store build artifacts.
191#   Full path to directory with artifacts: ${CMAKE_CURRENT_BINARY_DIR}/<subdir>/<target>-execute
192#
193# EXPECTED_STDOUT
194#   Excepted value of test's stdout
195#
196# SEARCH_STDERR
197#   Message which is expected to present in stderr output
198#
199# DEPENDS
200#   List of additional dependences (exclude assembler and interpreter)
201function(verifier_add_test_run)
202    set(prefix ARG)
203    set(noValues VERIFIER_FAIL_TEST)
204    set(singleValues FILE TARGET SUBDIR LANGUAGE_CONTEXT)
205    set(multiValues RUNTIME_OPTIONS VERIFIER_OPTIONS EXPECTED_STDOUT SEARCH_STDERR DEPENDS)
206    cmake_parse_arguments(${prefix}
207                          "${noValues}"
208                          "${singleValues}"
209                          "${multiValues}"
210                          ${ARGN})
211
212    if (NOT DEFINED ARG_FILE)
213        message(FATAL_ERROR "Mandatory FILE argument is not defined.")
214    endif()
215
216    if (NOT DEFINED ARG_TARGET)
217        message(FATAL_ERROR "Mandatory TARGET argument is not defined.")
218    endif()
219
220    if (TARGET ARG_TARGET)
221        message(FATAL_ERROR "Target ${ARG_TARGET} is already defined.")
222    endif()
223
224    set(output_file)
225    set(error_file)
226
227    if (ARG_VERIFIER_FAIL_TEST)
228        set(VERIFIER_FAIL_TEST VERIFIER_FAIL_TEST)
229    else()
230        set(VERIFIER_FAIL_TEST)
231    endif()
232
233    set(ARG_VERIFIER_OPTIONS "${ARG_VERIFIER_OPTIONS} --config-file=${CMAKE_CURRENT_SOURCE_DIR}/cts-generator/verifier.config")
234
235    verifier_add_asm_file(
236        FILE ${ARG_FILE}
237        TARGET ${ARG_TARGET}-verify
238        SUBDIR "${ARG_SUBDIR}"
239        ${VERIFIER_FAIL_TEST}
240        RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}"
241        VERIFIER_OPTIONS "${ARG_VERIFIER_OPTIONS}"
242        OUTPUT_FILE_VARIABLE output_file
243        ERROR_FILE_VARIABLE error_file
244        LANGUAGE_CONTEXT "${ARG_LANGUAGE_CONTEXT}"
245        DEPENDS "${ARG_DEPENDS}"
246    )
247
248    add_custom_target(${ARG_TARGET} COMMENT "Verifying ${ARG_TARGET} test")
249    add_dependencies(${ARG_TARGET} ${ARG_TARGET}-verify)
250
251    if (DEFINED ARG_EXPECTED_STDOUT)
252        set(expected_output_file "${output_file}.expected")
253        file(WRITE "${expected_output_file}" "${ARG_EXPECTED_STDOUT}")
254
255        add_custom_target(${ARG_TARGET}-check-stdout
256                          COMMENT "Check ${ARG_TARGET} stdout"
257                          COMMAND ${CMAKE_COMMAND} -E compare_files "${output_file}" "${expected_output_file}"
258                          DEPENDS ${ARG_TARGET}-verify)
259
260        add_dependencies(${ARG_TARGET} ${ARG_TARGET}-check-stdout)
261    endif()
262
263    if (DEFINED ARG_SEARCH_STDERR AND NOT (CMAKE_BUILD_TYPE MATCHES Release))
264        # TODO: Drop 'grep' usage, there must be some way like:
265        #   file(READ "${error_file}" STDERR_AS_STRING)
266        #   string(FIND ${STDERR_AS_STRING} ${ARG_SEARCH_STDERR})
267        # but my cmake knowledge is not enough.
268
269        add_custom_target(${ARG_TARGET}-check-logmsg
270                          COMMENT "Check ${ARG_TARGET} log message"
271                          COMMAND grep -zo \"${ARG_SEARCH_STDERR}\" ${error_file} >/dev/null
272                          DEPENDS ${ARG_TARGET}-verify)
273
274        add_dependencies(${ARG_TARGET} ${ARG_TARGET}-check-logmsg)
275    endif()
276
277endfunction()
278
279
280# Add a test with default and enforced jit runs
281#
282# Usage:
283#
284#   add_test_file(
285#       FILE <source>
286#       [RUNTIME_OPTIONS <option>...]
287#       [COMPILER_OPTIONS <option>...]
288#       [ARGUMENTS <argument>...]
289#       [EXPECTED_STDOUT <out_value>]
290#       [DEBUG_LOG_MESSAGE <msg_value>]
291#       [DEBUG_LOG_MESSAGE_ENFORCED_JIT <jit_msg_value>]
292#       [DISABLE_LIMIT_STD_ALLOC]
293#       [SKIP_AOT]
294#       [SKIP_OSR]
295#       [SKIP_VERIFICATION]
296#       [SKIP_INTERPRETER_IRTOC]
297#       [SKIP_CROSS]
298#   )
299#
300# Adds a test <source>
301#
302# Options:
303#
304# RUNTIME_OPTIONS
305#   Runtime options
306#
307# COMPILER_OPTIONS
308#   Options for compiler, given both to panda and paoc
309#
310# ARGUMENTS
311#   List of arguments that will be passed to program's entry point
312#
313# EXPECTED_STDOUT
314#   Excepted value of test's stdout
315#
316# DEBUG_LOG_MESSAGE
317#   Message which is expected to present in stderr output with --log-level=debug
318#
319# DEBUG_LOG_MESSAGE_ENFORCED_JIT
320#   Same as previous, but only for enforce-jit-compiler case.
321#
322# DISABLE_LIMIT_STD_ALLOC
323#   Do not check malloc usage
324#
325# SKIP_AOT
326#   Skip AOT run
327#
328# SKIP_OSR
329#   Skip OSR run
330#
331# SKIP_VERIFICATION
332#   Skip verification run
333#
334# SKIP_INTERPRETER_IRTOC
335#   Skip run with irtoc implemented interpreter
336#
337# SKIP_CROSS
338#   Skip cross-tests launch on host
339#   Arguments: arm32, arm64
340function(add_test_file)
341    set(prefix ARG)
342    set(noValues DISABLE_LIMIT_STD_ALLOC SKIP_AOT SKIP_OSR SKIP_VERIFICATION VERIFIER_FAIL_TEST SKIP_INTERPRETER_IRTOC)
343    set(singleValues FILE DEBUG_LOG_MESSAGE DEBUG_LOG_MESSAGE_ENFORCED_JIT SKIP_CROSS)
344    set(multiValues EXPECTED_STDOUT VERIFIER_OPTIONS VERIFIER_EXPECTED_STDOUT SEARCH_STDERR ARGUMENTS RUNTIME_OPTIONS
345        COMPILER_OPTIONS PRLIMIT_OPTIONS)
346    cmake_parse_arguments(${prefix}
347                          "${noValues}"
348                          "${singleValues}"
349                          "${multiValues}"
350                          ${ARGN})
351
352
353    if (NOT DEFINED ARG_FILE)
354        message(FATAL_ERROR "Mandatory FILE argument is not defined.")
355    endif()
356
357    get_filename_component(target "${ARG_FILE}" NAME)
358    get_filename_component(path "${ARG_FILE}" DIRECTORY)
359    get_filename_component(suite ${path} NAME)
360
361    if (NOT ARG_DISABLE_LIMIT_STD_ALLOC)
362        set(ARG_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS} --limit-standard-alloc=true")
363    endif()
364
365    if (PANDA_ENABLE_EVENTS)
366        set(ARG_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS} --events-output=csv")
367    endif()
368
369    #TODO: add test suite to check with PANDA_COMPILER_TARGET
370    if (((PANDA_TARGET_ARM64) OR (PANDA_TARGET_ARM32) OR (PANDA_TARGET_AMD64)) AND DEFINED ARG_DEBUG_LOG_MESSAGE_ENFORCED_JIT)
371      set(CUR_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}" "--log-level=debug")
372      set(CUR_JIT_DEBUG_LOG_MESSAGE "${ARG_DEBUG_LOG_MESSAGE_ENFORCED_JIT}")
373    elseif(DEFINED ARG_DEBUG_LOG_MESSAGE)
374      set(CUR_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}" "--log-level=debug")
375      set(CUR_JIT_DEBUG_LOG_MESSAGE "${ARG_DEBUG_LOG_MESSAGE}")
376      set(CUR_DEBUG_LOG_MESSAGE "${ARG_DEBUG_LOG_MESSAGE}")
377    else()
378      set(CUR_RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}")
379    endif()
380
381    # Enable compiler-runtime entrypoints verification. It slows down tests execution a bit. If it will be a problem,
382    # consider removing this option from the cts tests.
383    set(CUR_RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS} --verify-entrypoints=true")
384
385    set(language_context "core")
386
387    if (ARG_VERIFIER_FAIL_TEST)
388        set(VERIFIER_FAIL_TEST VERIFIER_FAIL_TEST)
389    else()
390        set(VERIFIER_FAIL_TEST)
391    endif()
392
393    if (NOT ARG_SKIP_VERIFICATION)
394        verifier_add_test_run(
395            FILE "${ARG_FILE}"
396            TARGET ${target}-verifier
397            SUBDIR ${suite}-verifier
398            ${VERIFIER_FAIL_TEST}
399            VERIFIER_OPTIONS "${ARG_VERIFIER_OPTIONS}"
400            EXPECTED_STDOUT "${ARG_VERIFIER_EXPECTED_STDOUT}"
401            SEARCH_STDERR "${ARG_SEARCH_STDERR}"
402            LANGUAGE_CONTEXT "${language_context}"
403        )
404        add_dependencies(${suite} ${target}-verifier)
405    endif()
406
407    if (NOT ARG_SKIP_INTERPRETER_IRTOC AND NOT PANDA_TARGET_ARM32) # Arm32 is not supported in the Irtoc
408        panda_add_test_run(
409            FILE "${ARG_FILE}"
410            TARGET ${target}-g1-gc-irtoc
411            SUBDIR ${suite}-${gc_type}
412            EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
413            SEARCH_DEBUG_STDERR ${CUR_DEBUG_LOG_MESSAGE}
414            RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-enable-jit=false --gc-type=g1-gc --interpreter-type=irtoc"
415            COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
416            ARGUMENTS "${ARG_ARGUMENTS}"
417            LANGUAGE_CONTEXT "${language_context}"
418            AOT_MODE FALSE
419            PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
420        )
421        add_dependencies(${suite} ${target}-g1-gc-irtoc)
422    endif()
423
424    set(gc_types "stw" "gen-gc" "g1-gc")
425    foreach (gc_type IN LISTS gc_types)
426        panda_add_test_run(
427            FILE "${ARG_FILE}"
428            TARGET ${target}-${gc_type}-cpp
429            SUBDIR ${suite}-${gc_type}
430            EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
431            SEARCH_DEBUG_STDERR ${CUR_DEBUG_LOG_MESSAGE}
432            RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-enable-jit=false --gc-type=${gc_type}"
433            COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
434            ARGUMENTS "${ARG_ARGUMENTS}"
435            LANGUAGE_CONTEXT "${language_context}"
436            AOT_MODE FALSE
437            PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
438        )
439        add_dependencies(${suite} ${target}-${gc_type}-cpp)
440    endforeach()
441
442    # Check if JIT-compilation wasn't turned off explicitly:
443    if (PANDA_COMPILER_ENABLE AND NOT CUR_RUNTIME_OPTIONS MATCHES "^.*--compiler-enable-jit=false.*$")
444        panda_add_test_run(
445            FILE "${ARG_FILE}"
446            TARGET ${target}-cpp-enforce-jit-compiler
447            SUBDIR ${suite}-enforce-jit-compiler
448            EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
449            SEARCH_DEBUG_STDERR ${CUR_JIT_DEBUG_LOG_MESSAGE}
450            RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-enable-jit=true --compiler-hotness-threshold=0 --no-async-jit=true"
451            COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
452            ARGUMENTS "${ARG_ARGUMENTS}"
453            LANGUAGE_CONTEXT "${language_context}"
454            AOT_MODE FALSE
455            PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
456        )
457        add_dependencies(${suite} ${target}-cpp-enforce-jit-compiler)
458        add_dependencies(cts-jit-tests ${target}-cpp-enforce-jit-compiler)
459
460        if (PANDA_CI_TESTING_MODE STREQUAL "Nightly")
461            panda_add_test_run(
462                FILE "${ARG_FILE}"
463                TARGET ${target}-cpp-enforce-jit-compiler-no-inline
464                SUBDIR ${suite}-enforce-jit-compiler-no-inline
465                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
466                SEARCH_DEBUG_STDERR ${CUR_JIT_DEBUG_LOG_MESSAGE}
467                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-enable-jit=true --compiler-hotness-threshold=0 --no-async-jit=true  --compiler-inlining=false"
468                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
469                ARGUMENTS "${ARG_ARGUMENTS}"
470                LANGUAGE_CONTEXT "${language_context}"
471                AOT_MODE FALSE
472                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
473            )
474            add_dependencies(${suite} ${target}-cpp-enforce-jit-compiler-no-inline)
475            add_dependencies(cts-jit-tests ${target}-cpp-enforce-jit-compiler-no-inline)
476        endif()
477
478        if (PANDA_TARGET_ARM64 AND NOT ARG_SKIP_OSR)
479            panda_add_test_run(
480                FILE "${ARG_FILE}"
481                TARGET ${target}-cpp-osr-jit
482                SUBDIR ${suite}-osr-jit
483                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
484                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-enable-jit=true --compiler-hotness-threshold=2 --compiler-enable-osr=true"
485                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
486                ARGUMENTS "${ARG_ARGUMENTS}"
487                LANGUAGE_CONTEXT "${language_context}"
488                AOT_MODE FALSE
489                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
490            )
491            add_dependencies(${suite} ${target}-cpp-osr-jit)
492            add_dependencies(cts-jit-tests ${target}-cpp-osr-jit)
493        endif()
494    endif()
495
496    if (PANDA_TARGET_AMD64 AND PANDA_CI_TESTING_MODE STREQUAL "Nightly")
497        if (NOT DEFINED ARG_SKIP_CROSS OR NOT ${ARG_SKIP_CROSS} MATCHES ".*arm32.*")
498            panda_add_test_run(
499                FILE "${ARG_FILE}"
500                TARGET ${target}-arm32
501                SUBDIR ${suite}-arm32
502                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
503                SEARCH_DEBUG_STDERR ${CUR_DEBUG_LOG_MESSAGE}
504                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-cross-arch=arm"
505                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
506                ARGUMENTS "${ARG_ARGUMENTS}"
507                LANGUAGE_CONTEXT "${language_context}"
508                AOT_MODE FALSE
509                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
510            )
511            add_dependencies(${suite} ${target}-arm32)
512
513            panda_add_test_run(
514                FILE "${ARG_FILE}"
515                TARGET ${target}-arm32-enforce-jit-compiler
516                SUBDIR ${suite}-arm32-enforce-jit-compiler
517                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
518                SEARCH_DEBUG_STDERR ${CUR_JIT_DEBUG_LOG_MESSAGE}
519                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-hotness-threshold=0 --no-async-jit=true --compiler-cross-arch=arm"
520                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
521                ARGUMENTS "${ARG_ARGUMENTS}"
522                LANGUAGE_CONTEXT "${language_context}"
523                AOT_MODE FALSE
524                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
525            )
526            add_dependencies(${suite} ${target}-arm32-enforce-jit-compiler)
527        endif()
528
529        if (NOT DEFINED ARG_SKIP_CROSS OR NOT ${ARG_SKIP_CROSS} MATCHES ".*arm64.*")
530            panda_add_test_run(
531                FILE "${ARG_FILE}"
532                TARGET ${target}-arm64
533                SUBDIR ${suite}-arm64
534                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
535                SEARCH_DEBUG_STDERR ${CUR_DEBUG_LOG_MESSAGE}
536                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-cross-arch=arm64"
537                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
538                ARGUMENTS "${ARG_ARGUMENTS}"
539                LANGUAGE_CONTEXT "${language_context}"
540                AOT_MODE FALSE
541                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
542            )
543            add_dependencies(${suite} ${target}-arm64)
544
545            panda_add_test_run(
546                FILE "${ARG_FILE}"
547                TARGET ${target}-arm64-enforce-jit-compiler
548                SUBDIR ${suite}-arm64-enforce-jit-compiler
549                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
550                SEARCH_DEBUG_STDERR ${CUR_JIT_DEBUG_LOG_MESSAGE}
551                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}" "--compiler-hotness-threshold=0 --no-async-jit=true --compiler-cross-arch=arm64"
552                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
553                ARGUMENTS "${ARG_ARGUMENTS}"
554                LANGUAGE_CONTEXT "${language_context}"
555                AOT_MODE FALSE
556                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
557            )
558            add_dependencies(${suite} ${target}-arm64-enforce-jit-compiler)
559        endif()
560    endif()
561
562    if ((PANDA_TARGET_ARM64 OR PANDA_TARGET_AMD64) AND NOT ARG_SKIP_AOT)
563        foreach (gc_type IN LISTS gc_types)
564            panda_add_test_run(
565                FILE "${ARG_FILE}"
566                TARGET ${target}-aot-${gc_type}
567                SUBDIR ${suite}-aot-${gc_type}
568                EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
569                RUNTIME_OPTIONS "${CUR_RUNTIME_OPTIONS}"
570                COMPILER_OPTIONS "${ARG_COMPILER_OPTIONS}"
571                GC_OPTIONS "--gc-type=${gc_type}"
572                ARGUMENTS "${ARG_ARGUMENTS}"
573                LANGUAGE_CONTEXT "${language_context}"
574                AOT_MODE TRUE
575                PRLIMIT_OPTIONS "${ARG_PRLIMIT_OPTIONS}"
576            )
577            add_dependencies(${suite} ${target}-aot-${gc_type})
578            add_dependencies(cts-aot-tests ${target}-aot-${gc_type})
579        endforeach()
580    endif()
581
582endfunction()
583
584# Add a test for verifier
585#
586# Usage:
587#
588#   add_verifier_test(
589#       FILE <source>
590#       [RUNTIME_OPTIONS <option>...]
591#       [ARGUMENTS <argument>...]
592#       [EXPECTED_STDOUT <out_value>]
593#       [DEBUG_LOG_MESSAGE <msg_value>]
594#   )
595#
596# Adds a test <source>
597#
598# Options:
599#
600# RUNTIME_OPTIONS
601#   Runtime (interpreter and compiler) options
602#
603# VERIFER_OPTIONS
604#   Verifier CLI additional options
605#
606# EXPECTED_STDOUT
607#   Excepted value of test's stdout
608#
609# SEARCH_STDERR
610#   Message which is expected to present in stderr output
611#
612# VERIFIER_FAIL_TEST
613#   Force verifier do not set exit code
614#
615function(add_verifier_test)
616    set(prefix ARG)
617    set(noValues VERIFIER_FAIL_TEST)
618    set(singleValues FILE)
619    set(multiValues EXPECTED_STDOUT SEARCH_STDERR RUNTIME_OPTIONS VERIFIER_OPTIONS)
620    cmake_parse_arguments(${prefix}
621                          "${noValues}"
622                          "${singleValues}"
623                          "${multiValues}"
624                          ${ARGN})
625
626
627    if (NOT DEFINED ARG_FILE)
628        message(FATAL_ERROR "Mandatory FILE argument is not defined.")
629    endif()
630
631    get_filename_component(target "${ARG_FILE}" NAME)
632    get_filename_component(path "${ARG_FILE}" DIRECTORY)
633    get_filename_component(suite ${path} NAME)
634
635    if (ARG_VERIFIER_FAIL_TEST)
636        set(VERIFIER_FAIL_TEST VERIFIER_FAIL_TEST)
637    else()
638        set(VERIFIER_FAIL_TEST)
639    endif()
640
641    set(language_context "core")
642
643    verifier_add_test_run(
644        FILE "${ARG_FILE}"
645        TARGET ${target}-verifier
646        SUBDIR ${suite}-verifier
647        ${VERIFIER_FAIL_TEST}
648        VERIFIER_OPTIONS "${ARG_VERIFIER_OPTIONS}"
649        RUNTIME_OPTIONS "${ARG_RUNTIME_OPTIONS}"
650        EXPECTED_STDOUT "${ARG_EXPECTED_STDOUT}"
651        SEARCH_STDERR "${ARG_SEARCH_STDERR}"
652        LANGUAGE_CONTEXT "${language_context}"
653    )
654    add_dependencies(${suite} ${target}-verifier)
655
656endfunction()
657
658add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/env-01.pa" ARGUMENTS -- 1 2 EXPECTED_STDOUT "1\n2\n")
659add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-01.pa")
660add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-02.pa")
661add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-03.pa")
662add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-04.pa")
663add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-05.pa")
664add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-06.pa")
665add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-07.pa")
666add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-08.pa")
667add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-09.pa")
668add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-10.pa")
669add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-11.pa")
670add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-12.pa")
671add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-13.pa")
672add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-14.pa")
673add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-15.pa")
674add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-16.pa")
675add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-17.pa")
676add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-18.pa")
677add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-21.pa")
678add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-22.pa")
679add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-23.pa")
680add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-24.pa")
681add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-25.pa")
682add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-26.pa")
683add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-27.pa")
684add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-28.pa")
685add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-29.pa")
686add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-30.pa")
687add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-31.pa")
688add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-32.pa")
689add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-33.pa" SKIP_VERIFICATION)
690add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-34.pa" SKIP_VERIFICATION)
691add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-35.pa")
692add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-36.pa")
693add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-40.pa")
694add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-41.pa")
695add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-42.pa")
696add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-43.pa")
697add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-44.pa")
698add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-45.pa")
699add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-46.pa")
700add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-47.pa" EXPECTED_STDOUT "/ by zero" SKIP_INTERPRETER_IRTOC)
701add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-48.pa" EXPECTED_STDOUT "/ by zero" SKIP_INTERPRETER_IRTOC)
702add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-49.pa")
703add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-50.pa")
704add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-51.pa")
705add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-52.pa")
706add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-53.pa" COMPILER_OPTIONS --compiler-inlining=false)
707add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-54.pa" COMPILER_OPTIONS --compiler-inlining=false)
708add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-55.pa" COMPILER_OPTIONS --compiler-inlining=false)
709add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-56.pa" COMPILER_OPTIONS --compiler-inlining=false)
710add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-57.pa" COMPILER_OPTIONS --compiler-inlining=false)
711add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-58.pa" RUNTIME_OPTIONS --compiler-inlining=false)
712add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-59.pa" RUNTIME_OPTIONS --compiler-inlining=false)
713add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-60.pa" RUNTIME_OPTIONS --compiler-inlining=false)
714add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-61.pa" RUNTIME_OPTIONS --compiler-inlining=false)
715add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-62.pa" RUNTIME_OPTIONS --compiler-inlining=false)
716add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-63.pa" RUNTIME_OPTIONS --compiler-inlining=false)
717add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-64.pa" RUNTIME_OPTIONS --compiler-inlining=false)
718add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-65.pa" RUNTIME_OPTIONS --compiler-inlining=false)
719add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-66.pa" RUNTIME_OPTIONS --compiler-inlining=false)
720add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-67.pa" RUNTIME_OPTIONS --compiler-inlining=false)
721add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/math-68.pa" RUNTIME_OPTIONS --compiler-inlining=false)
722add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-01.pa")
723add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-02.pa")
724add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-03.pa")
725add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-04.pa")
726add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-05.pa")
727add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-06.pa")
728add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-07.pa")
729add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-08.pa")
730add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-09.pa")
731add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-10.pa")
732add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-11.pa")
733add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-12.pa")
734add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-13.pa")
735add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-14.pa")
736add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-15.pa")
737add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-16.pa")
738add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-17.pa")
739add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-18.pa")
740add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-19.pa")
741add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-20.pa")
742add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-21.pa")
743add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-22.pa")
744add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-25.pa")
745add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-26.pa")
746add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-jeq-obj.pa")
747add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-jne-obj.pa")
748add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-jeqz-obj.pa")
749add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/op-jnez-obj.pa")
750add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/literalarrays-01.pa")
751add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/literalarrays-02.pa")
752add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/literalarrays-03.pa")
753add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/literalarrays-04.pa")
754add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/literalarrays-05.pa")
755add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-01.pa")
756add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-02.pa")
757add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-03.pa")
758add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-04.pa")
759add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-05.pa")
760add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-06.pa")
761add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-07.pa")
762add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-08.pa")
763add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-09.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Verifier warning 4" SKIP_INTERPRETER_IRTOC)
764add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-10.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Verifier warning 4" SKIP_INTERPRETER_IRTOC)
765add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-11.pa" SKIP_INTERPRETER_IRTOC)
766add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-12.pa" EXPECTED_STDOUT "idx = 2; length = 1" SKIP_INTERPRETER_IRTOC)
767add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-13.pa" EXPECTED_STDOUT "idx = 2; length = 1" SKIP_INTERPRETER_IRTOC)
768add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/arrays-14.pa" EXPECTED_STDOUT "size = -1" SKIP_INTERPRETER_IRTOC)
769add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/exceptions-02.pa" SKIP_INTERPRETER_IRTOC)
770add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/exceptions-03.pa" SKIP_INTERPRETER_IRTOC)
771add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/exceptions-04.pa" SKIP_INTERPRETER_IRTOC)
772add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-01.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
773add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-02.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
774add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-03.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
775add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-04.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
776add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-05.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
777add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-06.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
778add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-07.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
779add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-08.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
780add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-09.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
781add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-10.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
782add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-11.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
783add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-12.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
784add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-13.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
785add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-14.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
786add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-15.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
787add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-16.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
788add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-17.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
789add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-18.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
790add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/far-jump-19.pa" COMPILER_OPTIONS --compiler-max-bytecode-size=40000)
791add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-01.pa")
792add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-02.pa")
793add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-03.pa")
794add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-04.pa")
795add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-05.pa")
796add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-06.pa")
797add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-07.pa")
798add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-08.pa")
799add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-09.pa")
800add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-10.pa")
801add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-11.pa")
802add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-12.pa")
803add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-13.pa" SKIP_CROSS "arm32")
804add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-14.pa")
805add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-15.pa")
806add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-16.pa")
807add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-17.pa")
808add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-18.pa")
809add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-23.pa")
810add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-24.pa")
811add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-25.pa")
812add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-26.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Verifier warning 4" SKIP_INTERPRETER_IRTOC)
813add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-27.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Verifier warning 4" SKIP_INTERPRETER_IRTOC)
814add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-28.pa" EXPECTED_STDOUT "R1 cannot be cast to R2" VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Possibly incompatible accumulator type" SKIP_INTERPRETER_IRTOC)
815add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-29.pa" SKIP_INTERPRETER_IRTOC)
816add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-30.pa" EXPECTED_STDOUT "abstract method \"R.foo\"" SKIP_INTERPRETER_IRTOC)
817add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-31.pa")
818add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-32.pa")
819add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-33.pa" SKIP_CROSS "arm32" SKIP_INTERPRETER_IRTOC)
820add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-34.pa")
821add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-35.pa")
822add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/obj-36.pa" VERIFIER_OPTIONS "--log-level=warning" SEARCH_STDERR "Possibly incompatible accumulator type" SKIP_INTERPRETER_IRTOC)
823
824add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-01.pa" SKIP_VERIFICATION)
825add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-02.pa" SKIP_VERIFICATION)
826add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-03.pa")
827add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-04.pa")
828add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-05.pa")
829add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-06.pa")
830add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-07.pa" SKIP_VERIFICATION)
831add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-08.pa")
832add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-09.pa" SKIP_VERIFICATION)
833add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-10.pa")
834add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-11.pa" SKIP_VERIFICATION)
835add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-12.pa")
836add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-13.pa" EXPECTED_STDOUT "23")
837add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-14.pa" EXPECTED_STDOUT "24")
838add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-15.pa" EXPECTED_STDOUT "26.6" SKIP_VERIFICATION)
839add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-16.pa" EXPECTED_STDOUT "26.6")
840add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-17.pa" EXPECTED_STDOUT "27")
841add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-18.pa" EXPECTED_STDOUT "28")
842add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-19.pa" EXPECTED_STDOUT "asdf\n")
843add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-20.pa")
844add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-21.pa")
845add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-22.pa")
846add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-23.pa")
847add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-24.pa")
848add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-25.pa")
849add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-26.pa")
850add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-28.pa")
851add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-29.pa")
852add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-54.pa" PRLIMIT_OPTIONS "${prlimit_options}")
853add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-55.pa")
854add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/intrinsics-f32-01.pa")
855
856add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-01.pa")
857add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-02.pa")
858add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-03.pa")
859add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-04.pa")
860add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-05.pa")
861add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-06.pa")
862
863add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/initobj-bad-02.pa" SKIP_VERIFICATION SKIP_INTERPRETER_IRTOC)
864
865add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/big_ark_option_value.pa" RUNTIME_OPTIONS --code-cache-size-limit=3221225472)
866
867add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/oom-01.pa" COMPILER_OPTIONS --compiler-hotness-threshold=0 --compiler-inlining=false RUNTIME_OPTIONS --heap-size-limit=13000000 SKIP_INTERPRETER_IRTOC)
868add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/oom-02.pa" RUNTIME_OPTIONS --heap-size-limit=13000000 SKIP_INTERPRETER_IRTOC)
869
870add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/tst-branch.pa")
871add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/tst-compare.pa")
872add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/cts-assembly/tst-select.pa")
873
874add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/allocate-252-params.pa")
875
876add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/bitops-bitwise-and.pa" COMPILER_OPTIONS --compiler-print-stats)
877add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/math-partial-sums.pa" COMPILER_OPTIONS --compiler-print-stats DISABLE_LIMIT_STD_ALLOC)
878add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/fmod.pa" COMPILER_OPTIONS --compiler-inlining=false)
879add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/stack-4-params.pa" COMPILER_OPTIONS --compiler-inlining=false VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
880add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/stack-9-params.pa" COMPILER_OPTIONS --compiler-inlining=false VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
881add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/fcmp.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
882add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/irreducible_loop.pa")
883if (NOT PANDA_ENABLE_ADDRESS_SANITIZER)
884#TODO(mwx851039): This test may exceed 400Mb stack in CI (#4061).
885add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/loop-unroll.pa" COMPILER_OPTIONS --compiler-inlining=false)
886endif()
887add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/loop-peeling.pa")
888add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/shr32.pa")
889add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/deopt_false_test.pa" COMPILER_OPTIONS --compiler-inlining=false)
890add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/deopt_true_test.pa" COMPILER_OPTIONS --compiler-inlining=false SKIP_INTERPRETER_IRTOC)
891add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/regression/deopt_true_call_test.pa" COMPILER_OPTIONS --compiler-inlining=true SKIP_INTERPRETER_IRTOC)
892
893add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/sum.pa")
894add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/signed_imms.pa")
895add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/array.pa")
896add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/newobj.pa")
897add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/static.pa")
898add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/call.pa")
899add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/call1.pa")
900add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/call2.pa")
901add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/call.acc.pa")
902add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/initobj.pa")
903add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/call.virt.pa")
904# Lots of runtime calls with enabled '--verify-entrypoints' option cause lots of standard allocations
905add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/barriers.pa" DISABLE_LIMIT_STD_ALLOC SKIP_CROSS "arm32")
906
907add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/ldai.pa")
908add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/and.pa")
909add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/andi.pa")
910add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/or.pa")
911add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/ori.pa")
912add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/shr.pa")
913add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/shri.pa")
914add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/shl.pa")
915add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/shli.pa")
916add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32toi16.pa")
917add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32toi8.pa")
918add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i64toi32.pa")
919add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u64toi32.pa")
920add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u64tou32.pa")
921add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32toi64.pa")
922add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32toi64.pa")
923add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32tou1.pa")
924add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32tou1.pa")
925add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i64tou1.pa")
926add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u64tou1.pa")
927add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32tof32.pa")
928add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32tof64.pa")
929add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32tof32.pa")
930add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32tof64.pa")
931add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i64tof32.pa")
932add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i64tof64.pa")
933add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u64tof32.pa")
934add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u64tof64.pa")
935add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32tou16.pa")
936add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/i32tou8.pa")
937add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32toi16.pa")
938add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32toi8.pa")
939add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32tou16.pa")
940add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/u32tou8.pa")
941add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fadd2.pa")
942add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fadd2.64.pa")
943add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fsub2.pa")
944add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fsub2.64.pa")
945add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fmul2.pa")
946add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fmul2.64.pa")
947add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fdiv2.pa")
948add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fdiv2.64.pa")
949add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fmod2.pa")
950add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fmod2.64.pa")
951add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fneg.pa")
952add_test_file(FILE "${CMAKE_CURRENT_SOURCE_DIR}/irtoc-interpreter-tests/irtoc-opcode-suite/fneg.64.pa")
953
954if (TARGET verifier-tests)
955# Verifier regression tests
956# Negative (must fail)
957add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_err_beyond_end_of_function.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Invalid last instruction in method, execution beyond the method code boundary.")
958add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_jump_on_exc_handler.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Cflow invalid jump into exc handler")
959add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_jump_on_exc_handler_from_body.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Cflow invalid jump into exc handler")
960add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_jump_out_of_body.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Jump offset is out of bounds of method body")
961add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_execution_may_go_beyond_the_end.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Invalid last instruction in method, execution beyond the method code boundary.")
962add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_fallthrough_from_exc_handler_to_exc_handler.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Cflow body fall into exc handler")
963add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_fallthrough_to_exc_handler_from_body.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Cflow body fall into exc handler")
964add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/cflow_jump_from_exc_handler_to_exc_handler.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Cflow invalid jump into exc handler")
965add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/wrong_accumulator_position.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Accumulator position is out of range")
966# regression
967add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1926.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad call")
968add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1940.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad call undefined register")
969add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1863.pa")
970add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1745.pa")
971add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/issue_1163.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
972add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2084.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Undefined register")
973add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/issue_1981.pa")
974add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1697.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
975add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1702.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Undefined register")
976add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1813.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
977add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1826.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Inconsistent register and field types")
978add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1827.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Inconsistent register and field types")
979add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1834.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
980add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1828.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Expected instance field")
981add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2072.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
982add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2075.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
983add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2085.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Inconsistent register and field types")
984add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2086_1.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Expected instance field")
985add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2086_2.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Inconsistent register and field types")
986add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2088.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Unexpected field type")
987add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2090.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
988add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2107_1.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
989add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2107_2.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
990add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2136.pa")
991add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2256.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad call")
992add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2260.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
993add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2374.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad call static method as virtual")
994add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/issue_964.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
995add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_1833.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Inconsistent register and field types")
996add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/jumps_1.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Register type conflict")
997add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/jumps_2.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
998add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/jumps_3.pa")
999add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2089.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
1000add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2702_1.pa")
1001add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2702_2.pa")
1002add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2702_3.pa")
1003add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2702_4.pa")
1004add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2740.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
1005add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2787.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Undefined register")
1006add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2816.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
1007add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2817.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
1008add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2818_1.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Undefined register")
1009add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2818_2.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Undefined register")
1010add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_2921.pa")
1011add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_3060.pa")
1012add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_3133.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Bad register type")
1013add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_3197.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=info" SEARCH_STDERR "lways NPE")
1014add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_3219.pa")
1015add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/bug_3228.pa" VERIFIER_FAIL_TEST VERIFIER_OPTIONS "--log-level=info" SEARCH_STDERR "lways NPE")
1016add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/mr_3176.pa" VERIFIER_OPTIONS "--methods=_GLOBAL::main")
1017add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/initobj-bad-03.pa" VERIFIER_FAIL_TEST SEARCH_STDERR "Initobj calls not constructor")
1018add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/access_field_nomodifier_core.pa")
1019add_verifier_test(FILE "${CMAKE_CURRENT_SOURCE_DIR}/verifier-tests/exception_type.pa")
1020endif()
1021