# Copyright 2012 the V8 project authors. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#     * Neither the name of Google Inc. nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

[
[ALWAYS, {
  # Modules which are only meant to be imported from by other tests, not to be
  # tested standalone.
  'modules-skip*': [SKIP],

  # All tests in the bug directory are expected to fail.
  'bugs/*': [FAIL],

  ##############################################################################
  # Fails.
  'regress/regress-1119': [FAIL],

  # Issue 1719: Slow to collect arrays over several contexts.
  'regress/regress-524': [SKIP],
  # When that bug is fixed, revert the expectation to:
  # Skip long running test in debug and allow it to timeout in release mode.
  # regress/regress-524: [PASS, TIMEOUT, ['mode == debug', SKIP]],

  # This test non-deterministically runs out of memory on Windows ia32.
  'regress/regress-crbug-160010': [SKIP],

  # Issue 3389: deopt_every_n_garbage_collections is unsafe
  'regress/regress-2653': [SKIP],

  # Issue 3784: setters-on-elements is flaky
  'setters-on-elements': [PASS, FAIL],

  # Issue 3641: The new 'then' semantics suppress some exceptions.
  # These tests may be changed or removed when 'chain' is deprecated.
  'es6/debug-promises/reject-with-throw-in-reject': [FAIL],
  'es6/debug-promises/reject-with-undefined-reject': [FAIL],
  'es6/debug-promises/reject-with-invalid-reject': [FAIL],

  # Issue 3660: Replacing activated TurboFan frames by unoptimized code does
  # not work, but we expect it to not crash.
  'debug-step-turbofan': [PASS, FAIL],

  ##############################################################################
  # Too slow in debug mode with --stress-opt mode.
  'regress/regress-2318': [PASS, ['mode == debug', SKIP]],
  'regress/regress-create-exception': [PASS, ['mode == debug', SKIP]],

  ##############################################################################
  # Too slow in debug mode for validation of elements.
  'regress/regress-430201': [PASS, ['mode == debug', SKIP]],
  'regress/regress-430201b': [PASS, ['mode == debug', SKIP]],

  ##############################################################################
  # Too slow in debug mode for GC stress mode.
  'regress/regress-crbug-217858': [PASS, ['mode == debug', SKIP]],

  # Too slow in debug mode and under turbofan.
  'regress/regress-4595': [PASS, NO_VARIANTS, ['mode == debug', SKIP]],

  ##############################################################################
  # Only RegExp stuff tested, no need for extensive optimizing compiler tests.
  'regexp-global': [PASS, NO_VARIANTS],
  'third_party/regexp-pcre/regexp-pcre': [PASS, NO_VARIANTS],

  ##############################################################################
  # No need to waste time for this test.
  'd8-performance-now': [PASS, NO_VARIANTS],
  'regress/regress-crbug-491062': [PASS, NO_VARIANTS],

  # Issue 488: this test sometimes times out.
  # TODO(arm): This seems to flush out a bug on arm with simulator.
  'array-constructor': [PASS, TIMEOUT, ['arch == arm and simulator == True', SKIP]],

  # Issue 4413: this test sometimes times out with TSAN because we trigger
  # the slow path in C++ with holey arrays in Function.prototype.apply.
  # TODO(bmeurer): Add fast support for holey arrays in apply.
  'apply': [PASS, TIMEOUT],

  # Very slow on ARM and MIPS, contains no architecture dependent code.
  'unicode-case-overoptimization': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', TIMEOUT]],
  'regress/regress-3976': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips', SKIP]],
  'regress/regress-crbug-482998': [PASS, NO_VARIANTS, ['arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips', SKIP]],

  ##############################################################################
  # Skip long running tests that time out in debug mode.
  'generated-transition-stub': [PASS, ['mode == debug', SKIP]],
  'migrations': [SKIP],
  'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug', SKIP]],

  ##############################################################################
  # This test sets the umask on a per-process basis and hence cannot be
  # used in multi-threaded runs.
  # On android there is no /tmp directory.
  # Currently d8-os generates a temporary directory name using Math.random(), so
  # we cannot run several variants of d8-os simultaneously, since all of them
  # get the same random seed and would generate the same directory name. Besides
  # that, it doesn't make sense to run several variants of d8-os anyways.
  'd8-os': [PASS, NO_VARIANTS, ['isolates or arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]],
  'tools/tickprocessor': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]],
  'tools/dumpcpp': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]],

  ##############################################################################
  # Long running test that reproduces memory leak and should be run manually.
  'regress/regress-2073': [SKIP],

  ##############################################################################
  # Tests verifying CHECK and ASSERT.
  'verify-check-false': [FAIL, NO_VARIANTS],
  'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug or dcheck_always_on == True', FAIL]],

  ##############################################################################
  # Tests with different versions for release and debug.
  'compiler/alloc-number': [PASS, ['mode == debug', SKIP]],
  'compiler/alloc-number-debug': [PASS, ['mode == release', SKIP]],
  'regress/regress-634-debug': [PASS, ['mode == release', SKIP]],

  # BUG(336820). TODO(bmeurer): Investigate.
  'regress/regress-336820': [PASS, FAIL],

  # BUG(v8:2989). PASS/FAIL on linux32 because crankshaft is turned off for
  # nosse2. Also for arm novfp3.
  'regress/regress-2989': [FAIL, NO_VARIANTS, ['system == linux and arch == x87 or arch == arm and simulator == True', PASS]],

  # This test variant makes only sense on arm.
  'math-floor-of-div-nosudiv': [PASS, SLOW, ['arch not in [arm, arm64, android_arm, android_arm64]', SKIP]],

  # Too slow for slow variants.
  'asm/embenchen/*': [PASS, SLOW, FAST_VARIANTS],
  'asm/poppler/*': [PASS, SLOW, FAST_VARIANTS],
  'asm/sqlite3/*': [PASS, SLOW, FAST_VARIANTS],

  # Slow tests.
  'copy-on-write-assert': [PASS, SLOW],
  'debug-scopes': [PASS, SLOW],
  'numops-fuzz-part*': [PASS, ['mode == debug', SLOW]],
  'readonly': [PASS, SLOW],
  'regress/regress-1200351': [PASS, SLOW],
  'regress/regress-crbug-474297': [PASS, ['mode == debug', SLOW]],
  'es6/tail-call-megatest*': [PASS, SLOW, FAST_VARIANTS, ['tsan', SKIP]],

  # case-insensitive unicode regexp relies on case mapping provided by ICU.
  'es6/unicode-regexp-ignore-case': [PASS, ['no_i18n == True', FAIL]],
  'es6/unicode-regexp-ignore-case-noi18n': [FAIL, ['no_i18n == True', PASS]],
  'regress/regress-5036': [PASS, ['no_i18n == True', FAIL]],
  # desugaring regexp property class relies on ICU.
  'harmony/regexp-property-*': [PASS, ['no_i18n == True', FAIL]],

  # Allocates a large array buffer, which TSAN sometimes cannot handle.
  'regress/regress-599717': [PASS, ['tsan', SKIP]],

  # TODO(bmeurer): Flaky timeouts (sometimes <1s, sometimes >3m).
  'unicodelctest': [PASS, NO_VARIANTS],
  'unicodelctest-no-optimization': [PASS, NO_VARIANTS],
}],  # ALWAYS

['novfp3 == True', {
  'asm/embenchen/box2d': [SKIP],
  'asm/embenchen/zlib': [SKIP],
  'asm/embenchen/memops': [SKIP],
  'asm/embenchen/lua_binarytrees': [SKIP],
}],  # novfp3 == True

##############################################################################
['gc_stress == True', {
  # Skip tests not suitable for GC stress.
  'allocation-site-info': [SKIP],
  'array-constructor-feedback': [SKIP],
  'array-feedback': [SKIP],
  'array-literal-feedback': [SKIP],
  'd8-performance-now': [SKIP],
  'elements-kind': [SKIP],
  'elements-transition-hoisting': [SKIP],
  'fast-prototype': [SKIP],
  'field-type-tracking': [SKIP],
  'getters-on-elements': [SKIP],
  'es6/block-let-crankshaft': [SKIP],
  'opt-elements-kind': [SKIP],
  'osr-elements-kind': [SKIP],
  'regress/regress-crbug-137689': [SKIP],
  'regress/regress-165637': [SKIP],
  'regress/regress-2249': [SKIP],
  'regress/regress-4121': [SKIP],
  'compare-known-objects-slow': [SKIP],
  # Tests taking too long
  'debug-stepout-scope-part8': [SKIP],
  'mirror-object': [SKIP],
  'packed-elements': [SKIP],
  'regress/regress-1122': [SKIP],
  'regress/regress-331444': [SKIP],
  'regress/regress-353551': [SKIP],
  'regress/regress-crbug-119926': [SKIP],
  'regress/short-circuit': [SKIP],
  'stack-traces-overflow': [SKIP],
  'unicode-test': [SKIP],
  'whitespaces': [SKIP],

  # Async function tests taking too long
  # https://bugs.chromium.org/p/v8/issues/detail?id=5411
  'harmony/async-function-debug-scopes': [SKIP],
  'harmony/async-debug-caught-exception-cases0': [SKIP],
  'harmony/async-debug-caught-exception-cases1': [SKIP],
  'harmony/async-debug-caught-exception-cases2': [SKIP],
  'harmony/async-debug-caught-exception-cases3': [SKIP],

  # TODO(mstarzinger): Takes too long with TF.
  'array-sort': [PASS, NO_VARIANTS],
  'regress/regress-91008': [PASS, NO_VARIANTS],
  'regress/regress-transcendental': [PASS, ['arch == arm64', NO_VARIANTS]],
  'compiler/osr-regress-max-locals': [PASS, NO_VARIANTS],
  'math-floor-of-div': [PASS, NO_VARIANTS],
  'unicodelctest': [PASS, NO_VARIANTS],
  'unicodelctest-no-optimization': [PASS, NO_VARIANTS],

  # TODO(jkummerow): Doesn't work correctly in GC stress.
  'regress/regress-crbug-500497': [SKIP],

  # Too slow for gc stress.
  'asm/embenchen/box2d': [SKIP],

  # Issue 3723.
  'regress/regress-3717': [SKIP],

  # BUG(v8:4237)
  'regress/regress-3976': [SKIP],

  # Slow tests.
  'array-constructor': [PASS, SLOW],
  'json': [PASS, SLOW],
  'regress/regress-446389': [PASS, SLOW],
  'regress/regress-inline-getter-near-stack-limit': [PASS, SLOW],

  # BUG(v8:3097)
  'debug-references': [SKIP],

  # BUG(v8:4779): Crashes flakily with stress mode on arm64.
  'array-splice': [PASS, SLOW, ['arch == arm64', FAST_VARIANTS]],
}],  # 'gc_stress == True'

##############################################################################
['byteorder == big', {
  # Emscripten requires little-endian, skip all tests on big endian platforms.
  'asm/embenchen/*': [SKIP],
  'asm/poppler/*': [SKIP],
  'asm/sqlite3/*': [SKIP],
  # TODO(mips-team): Fix Wasm for big-endian.
  'wasm/*': [SKIP],
}],  # 'byteorder == big'

##############################################################################
['arch == arm64 or arch == android_arm64', {

  # arm64 TF timeout.
  'regress/regress-1257': [PASS, TIMEOUT],

  # Requires bigger stack size in the Genesis and if stack size is increased,
  # the test requires too much time to run.  However, the problem test covers
  # should be platform-independent.
  'regress/regress-1132': [SKIP],

  # Pass but take too long to run. Skip.
  # Some similar tests (with fewer iterations) may be included in arm64-js
  # tests.
  'asm/embenchen/box2d': [SKIP],
  'asm/embenchen/lua_binarytrees': [SKIP],
  'big-object-literal': [SKIP],
  'compiler/regress-arguments': [SKIP],
  'compiler/regress-gvn': [SKIP],
  'compiler/regress-4': [SKIP],
  'compiler/regress-or': [SKIP],
  'compiler/regress-rep-change': [SKIP],
  'regress/regress-1117': [SKIP],
  'regress/regress-1849': [SKIP],
  'regress/regress-3247124': [SKIP],
  'regress/regress-91008': [SKIP],
  'regress/regress-91010': [SKIP],
  'regress/regress-91013': [SKIP],
  'regress/regress-99167': [SKIP],

  # BUG(v8:3457).
  'deserialize-reference': [PASS, FAIL],

  # BUG(v8:4016)
  'regress/regress-crbug-467047': [SKIP],

  # Slow tests.
  'array-concat': [PASS, SLOW],
  'array-constructor': [PASS, SLOW],
  'array-indexing': [PASS, SLOW],
  'array-reduce': [PASS, SLOW],
  'array-sort': [PASS, SLOW],
  'array-splice': [PASS, SLOW],
  'bit-not': [PASS, SLOW],
  'compiler/alloc-number': [PASS, SLOW],
  'compiler/osr-assert': [PASS, SLOW],
  'compiler/osr-with-args': [PASS, SLOW],
  'debug-scopes': [PASS, SLOW],
  'generated-transition-stub': [PASS, SLOW],
  'json2': [PASS, SLOW],
  'math-floor-of-div-nosudiv': [PASS, SLOW],
  'math-floor-of-div': [PASS, SLOW],
  'mirror-object': [PASS, SLOW],
  'packed-elements': [PASS, SLOW],
  'regress/regress-1122': [PASS, SLOW],
  'regress/regress-2185-2': [PASS, SLOW],
  'regress/regress-2185': [PASS, SLOW],
  'regress/regress-2790': [PASS, SLOW],
  'regress/regress-331444': [PASS, SLOW],
  'regress/regress-490': [PASS, SLOW],
  'regress/regress-crbug-217858': [PASS, SLOW],
  'regress/regress-create-exception': [PASS, SLOW],
  'regress/regress-json-stringify-gc': [PASS, SLOW],
  'string-indexof-2': [PASS, SLOW],
  'unicodelctest-no-optimization': [PASS, SLOW],
  'unicodelctest': [PASS, SLOW],
  'unicode-test': [PASS, SLOW],
  'whitespaces': [PASS, TIMEOUT, SLOW],
}],  # 'arch == arm64'

['arch == arm64 and mode == debug and simulator_run == True', {

  # Pass but take too long with the simulator in debug mode.
  'array-sort': [PASS, TIMEOUT],
  'packed-elements': [SKIP],
  'regexp-global': [SKIP],
  'math-floor-of-div': [PASS, TIMEOUT],
  'math-floor-of-div-nosudiv': [PASS, TIMEOUT],
  'unicodelctest': [PASS, TIMEOUT],
  'unicodelctest-no-optimization': [PASS, TIMEOUT],
  # Issue 3219:
  'getters-on-elements': [PASS, ['gc_stress == True', FAIL]],
}],  # 'arch == arm64 and mode == debug and simulator_run == True'

##############################################################################
['asan == True', {
  # Skip tests not suitable for ASAN.
  'big-array-literal': [SKIP],
  'big-object-literal': [SKIP],
  'regress/regress-crbug-178790': [SKIP],

  # Exception thrown during bootstrapping on ASAN builds, see issue 4236.
  'regress/regress-1132': [SKIP],
}],  # 'asan == True'

##############################################################################
['msan == True', {
  # Skip tests not suitable for MSAN.
  'big-array-literal': [SKIP],
  # ICU upstream issues.
  'date': [SKIP],
  'deep-recursion': [SKIP],
  'regress/regress-builtinbust-7': [SKIP],
  'string-localecompare': [SKIP],

  # Too slow.
  'harmony/regexp-property-lu-ui': [SKIP],
}],  # 'msan == True'

##############################################################################
['arch == arm or arch == android_arm', {

  # Slow tests which times out in debug mode.
  'try': [PASS, ['mode == debug', SKIP]],
  'debug-scripts-request': [PASS, ['mode == debug', SKIP]],
  'array-constructor': [PASS, ['mode == debug', SKIP]],
  'regress/regress-1122': [PASS, SLOW, ['mode == debug and arch == android_arm', SKIP]],

  # Flaky test that can hit compilation-time stack overflow in debug mode.
  'unicode-test': [PASS, ['mode == debug', PASS, FAIL]],

  # Times out often in release mode on ARM.
  'compiler/regress-stacktrace-methods': [PASS, ['mode == release', TIMEOUT]],
  'array-splice': [PASS, TIMEOUT],

  # Long running tests. Skipping because having them timeout takes too long on
  # the buildbot.
  'big-object-literal': [SKIP],
  'compiler/alloc-number': [SKIP],
  'regress/regress-490': [SKIP],
  'regress/regress-create-exception': [SKIP],
  'regress/regress-3247124': [SKIP],

  # Requires bigger stack size in the Genesis and if stack size is increased,
  # the test requires too much time to run.  However, the problem test covers
  # should be platform-independent.
  'regress/regress-1132': [SKIP],

  # Currently always deopt on minus zero
  'math-floor-of-div-minus-zero': [SKIP],

  # Slow tests.
  'array-sort': [PASS, SLOW],
  'compiler/osr-with-args': [PASS, SLOW],
  'mirror-object': [PASS, SLOW],
  'packed-elements': [PASS, SLOW],
  'regress/regress-2185-2': [PASS, SLOW],
  'regress/regress-2790': [PASS, SLOW],
  'regress/regress-91008': [PASS, SLOW],
  'regress/regress-json-stringify-gc': [PASS, SLOW],
  'string-indexof-2': [PASS, TIMEOUT],
}],  # 'arch == arm or arch == android_arm'

##############################################################################
['arch == mipsel or arch == mips', {

  # Slow tests which times out in debug mode.
  'try': [PASS, ['mode == debug', SKIP]],
  'debug-scripts-request': [PASS, ['mode == debug', SKIP]],
  'array-constructor': [PASS, ['mode == debug', SKIP]],

  # Times out often in release mode on MIPS.
  'compiler/regress-stacktrace-methods': [PASS, ['mode == release', TIMEOUT]],
  'array-splice': [PASS, TIMEOUT],

  # Long running test.
  'mirror-object': [PASS, TIMEOUT],
  'string-indexof-2': [PASS, TIMEOUT],

  # Long running tests. Skipping because having them timeout takes too long on
  # the buildbot.
  'compiler/alloc-number': [SKIP],
  'regress/regress-490': [SKIP],
  'regress/regress-create-exception': [SKIP],
  'regress/regress-3247124': [SKIP],

  # Requires bigger stack size in the Genesis and if stack size is increased,
  # the test requires too much time to run.  However, the problem test covers
  # should be platform-independent.
  'regress/regress-1132': [SKIP],

  # Currently always deopt on minus zero
  'math-floor-of-div-minus-zero': [SKIP],
}],  # 'arch == mipsel or arch == mips'

##############################################################################
['arch == mips', {
  # Flaky with TF.
  'mirror-script': [PASS, NO_VARIANTS],
}],  # 'arch == mips'

##############################################################################
['arch == mips64el or arch == mips64', {

  # Slow tests which times out in debug mode.
  'try': [PASS, ['mode == debug', SKIP]],
  'debug-scripts-request': [PASS, ['mode == debug', SKIP]],
  'array-constructor': [PASS, ['mode == debug', SKIP]],

  # Times out often in release mode on MIPS.
  'compiler/regress-stacktrace-methods': [PASS, PASS, ['mode == release', TIMEOUT]],
  'array-splice': [PASS, TIMEOUT],

  # Long running test.
  'mirror-object': [PASS, TIMEOUT],
  'string-indexof-2': [PASS, TIMEOUT],

  # BUG(3251035): Timeouts in long looping crankshaft optimization
  # tests. Skipping because having them timeout takes too long on the
  # buildbot.
  'compiler/alloc-number': [PASS, SLOW],
  'compiler/array-length': [PASS, SLOW],
  'compiler/assignment-deopt': [PASS, SLOW],
  'compiler/deopt-args': [PASS, SLOW],
  'compiler/inline-compare': [PASS, SLOW],
  'compiler/inline-global-access': [PASS, SLOW],
  'compiler/optimized-function-calls': [PASS, SLOW],
  'compiler/pic': [PASS, SLOW],
  'compiler/property-calls': [PASS, SLOW],
  'compiler/recursive-deopt': [PASS, SLOW],
  'compiler/regress-4': [PASS, SLOW],
  'compiler/regress-funcaller': [PASS, SLOW],
  'compiler/regress-rep-change': [PASS, SLOW],
  'compiler/regress-arguments': [PASS, SLOW],
  'compiler/regress-funarguments': [PASS, SLOW],
  'compiler/regress-3249650': [PASS, SLOW],
  'compiler/simple-deopt': [PASS, SLOW],
  'regress/regress-490': [PASS, SLOW],
  'regress/regress-create-exception': [PASS, SLOW],
  'regress/regress-3218915': [PASS, SLOW],
  'regress/regress-3247124': [PASS, SLOW],

  # Requires bigger stack size in the Genesis and if stack size is increased,
  # the test requires too much time to run.  However, the problem test covers
  # should be platform-independent.
  'regress/regress-1132': [SKIP],

  # Currently always deopt on minus zero
  'math-floor-of-div-minus-zero': [SKIP],
}],  # 'arch == mips64el or arch == mips64'

##############################################################################
['system == windows', {
  # TODO(mstarzinger): Too slow with turbo fan.
  'big-object-literal': [SKIP],
  'math-floor-of-div': [PASS, ['mode == debug', SKIP]],
  'math-floor-of-div-nosudiv': [PASS, ['mode == debug', SKIP]],
  'unicodelctest': [PASS, ['mode == debug', SKIP]],

  # BUG(v8:3435)
  'debug-script-breakpoints': [PASS, FAIL],

  # BUG(v8:4495).
  'es6/collections': [PASS, ['arch == ia32', FAST_VARIANTS]],
}],  # 'system == windows'

##############################################################################
['system == macos', {
  # BUG(v8:5333)
  'big-object-literal': [SKIP],
}],  # 'system == macos'

##############################################################################
['arch == s390 or arch == s390x', {

  # Stack manipulations in LiveEdit is not implemented for this arch.
  'debug-liveedit-check-stack': [SKIP],
  'debug-liveedit-stack-padding': [SKIP],
  'debug-liveedit-restart-frame': [SKIP],
  'debug-liveedit-double-call': [SKIP],
}],  # 'arch == s390 or arch == s390x'

##############################################################################
['deopt_fuzzer == True', {

  # Skip tests that are not suitable for deoptimization fuzzing.
  'assert-opt-and-deopt': [SKIP],
  'never-optimize': [SKIP],
  'regress/regress-2185-2': [SKIP],
  'readonly': [SKIP],
  'array-feedback': [SKIP],

  # Bounds check triggers forced deopt for array constructors.
  'array-constructor-feedback': [SKIP],

  # Deopting uses just enough memory to make this one OOM.
  'regress/regress-3976': [SKIP],

  # Deopt every n garbage collections collides with deopt every n times.
  'regress/regress-2653': [SKIP],

  # Too slow.
  'es6/tail-call-megatest*': [SKIP],

  # Ongoing implementation of modules.
  # https://bugs.chromium.org/p/v8/issues/detail?id=1569
  # The deopt fuzzer currently does not respect the 'variant != ignition' rule
  # further down in this file, so we have to duplicate this here.
  # https://bugs.chromium.org/p/v8/issues/detail?id=5374
  'modules-*': [SKIP],
}],  # 'deopt_fuzzer == True'

##############################################################################
['predictable == True', {

  # Skip tests that are known to be non-deterministic.
  'd8-worker-sharedarraybuffer': [SKIP],
  'd8-os': [SKIP],
}],  # 'predictable == True'

##############################################################################
['arch == ppc and simulator_run == True or arch == ppc64 and simulator_run == True', {

  # take too long with the simulator.
  'regress/regress-1132': [SKIP],
}],  # 'arch == ppc and simulator_run == True'

##############################################################################
['arch == ppc64', {

  # stack overflow
  'big-array-literal': [SKIP],
  'regress/regress-353551': [SKIP],
}],  # 'arch == ppc64'

##############################################################################
['variant == stress', {
  'debug-evaluate-locals-optimized': [FAIL],
  'debug-evaluate-locals-optimized-double': [FAIL],
  'ignition/regress-599001-verifyheap': [SKIP],
  'unicode-test': [SKIP],
}],  # variant == stress

##############################################################################
['variant == turbofan', {

  # Assumptions about optimization need investigation in TurboFan.
  'regress-sync-optimized-lists': [FAIL],

}],  # variant == turbofan

##############################################################################
['variant == turbofan_opt', {

  # TODO(jarin/mstarzinger): Investigate debugger issues with TurboFan.
  'debug-evaluate-closure': [FAIL],
  'debug-evaluate-locals': [FAIL],
  'debug-set-variable-value': [FAIL],
  'debug-evaluate-locals-optimized': [FAIL],
  'debug-evaluate-locals-optimized-double': [FAIL],
  'debug-liveedit-double-call': [FAIL],
  'es6/debug-evaluate-blockscopes': [FAIL],

  # TODO(jgruber): Fails in --turbo --always-opt mode.
  'regress/regress-105': [FAIL],

  # Too slow.
  'big-object-literal': [SKIP],
  'ignition/regress-599001-verifyheap': [SKIP],
  'unicode-test': [SKIP],

}],  # variant == turbofan_opt

##############################################################################
['variant == ignition', {
  'debug-liveedit-double-call': [FAIL],
  'regress-sync-optimized-lists': [FAIL],

  # Might trigger stack overflow.
  'unicode-test': [SKIP],

  # TODO(4680): Test doesn't know about three tier compiler pipeline.
  'assert-opt-and-deopt': [SKIP],

  # Fails because concurrent compilation is not triggered on bytecode.
  # Check in Runtime_OptimizeFunctionOnNextCall.
  'compiler/manual-concurrent-recompile': [FAIL],
  'regress/regress-embedded-cons-string': [FAIL],
  'regress/regress-prepare-break-while-recompile': [FAIL],

}],  # variant == ignition

['variant == ignition and arch == arm64', {
  # TODO(rmcilroy,4680): Arm64 specific timeouts.
  'asm/construct-double': [SKIP],
  'compiler/osr-one': [SKIP],
  'compiler/osr-two': [SKIP],
  'wasm/asm-wasm-i32': [SKIP],
  'wasm/asm-wasm-u32': [SKIP],
}],  # variant == ignition and arch == arm64

['variant == ignition and arch == arm', {
  # TODO(rmcilroy,4680): Arm specific timeouts.
  'compiler/osr-one': [SKIP],
  'compiler/osr-two': [SKIP],
  'regress/regress-1257': [SKIP],
}],  # variant == ignition and arch == arm

['variant == ignition and msan', {
  # TODO(mythria,4680): All of these tests have large loops and hence slow
  # and timeout.
  'compiler/osr-big': [SKIP],
  'compiler/osr-nested': [SKIP],
  'regress/regress-298269': [SKIP],
  'regress/regress-crbug-319860': [SKIP],
  'regress/regress-deep-proto': [SKIP],
  'try': [SKIP],
  # Too slow for interpreter and msan.
  'es6/tail-call-megatest*': [SKIP],
}],  # variant == ignition and msan

##############################################################################
['variant == ignition_staging', {
  'assert-opt-and-deopt': [SKIP],
  'debug-liveedit-double-call': [FAIL],
  'regress-sync-optimized-lists': [FAIL],

  # Fails because concurrent compilation is not triggered on bytecode.
  # Check in Runtime_OptimizeFunctionOnNextCall.
  'compiler/manual-concurrent-recompile': [FAIL],
  'regress/regress-embedded-cons-string': [FAIL],
  'regress/regress-prepare-break-while-recompile': [FAIL],

  # Flaky.
  'asm/int32div': [SKIP],
  'asm/int32mod': [SKIP],
  'compiler/uint32': [SKIP],
  'regress/regress-454725': [SKIP],

  # Might trigger stack overflow.
  'unicode-test': [SKIP],

}],  # variant == ignition_staging

##############################################################################
['variant == ignition_turbofan', {
  'debug-liveedit-double-call': [FAIL],

  # Might trigger stack overflow.
  'unicode-test': [SKIP],

  'wasm/asm-wasm-f32': [PASS, ['arch in [arm64]', SKIP]],
  'wasm/asm-wasm-f64': [PASS, ['arch in [arm64]', SKIP]],

  # TODO(rmcilroy,titzer): Times out after
  # https://codereview.chromium.org/1951013002 .
  'regress/regress-599717': [PASS, ['tsan', SKIP]],

  # TODO(jarin): No truncations on CheckFloat64Hole.
  'getters-on-elements': [SKIP],

  # TODO(rmcilroy): Flaky OOM.
  'unicodelctest-no-optimization': [SKIP],

}],  # variant == ignition_turbofan

['variant == ignition_turbofan and arch == arm64', {
  # TODO(rmcilroy,4680): Arm64 specific timeouts.
  'asm/construct-double': [SKIP],
  'compiler/osr-one': [SKIP],
  'compiler/osr-two': [SKIP],
  'wasm/asm-wasm-i32': [SKIP],
  'wasm/asm-wasm-u32': [SKIP],
}],  # variant == ignition_turbofan and arch == arm64

['variant == ignition_turbofan and arch == arm', {
  # TODO(rmcilroy,4680): Arm specific timeouts.
  'compiler/osr-one': [SKIP],
  'compiler/osr-two': [SKIP],
  'regress/regress-1257': [SKIP],
}],  # variant == ignition_turbofan and arch == arm

['variant == ignition_turbofan and msan', {
  # TODO(mythria,4680): All of these tests have large loops and hence slow
  # and timeout.
  'compiler/osr-big': [SKIP],
  'compiler/osr-nested': [SKIP],
  'regress/regress-298269': [SKIP],
  'regress/regress-crbug-319860': [SKIP],
  'regress/regress-deep-proto': [SKIP],
  'try': [SKIP],
  # Too slow for interpreter and msan.
  'es6/tail-call-megatest*': [SKIP],
}],  # variant == ignition_turbofan and msan

##############################################################################
['variant != ignition and variant != ignition_staging and variant != ignition_turbofan', {
  # Ongoing implementation of modules.
  # https://bugs.chromium.org/p/v8/issues/detail?id=1569
  'modules-*': [SKIP],
}],  # variant != ignition and variant != ignition_staging and variant != ignition_turbofan

##############################################################################
['gcov_coverage', {
  # Tests taking too long.
  'array-functions-prototype-misc': [SKIP],

  # Stack overflow.
  'big-array-literal': [SKIP],
}],  # 'gcov_coverage'

##############################################################################
['variant == stress or variant == turbofan_opt', {
  # BUG(v8:5553).
  'wasm/grow-memory': [SKIP],
}],  # variant == stress or variant == turbofan_opt

##############################################################################
['variant == asm_wasm', {
  # Skip stuff uninteresting for asm.js
  'bugs/*': [SKIP],
  'compiler/*': [SKIP],
  'es6/*': [SKIP],
  'es7/*': [SKIP],
  'es8/*': [SKIP],
  'harmony/*': [SKIP],
  'ignition/*': [SKIP],
  'lithium/*': [SKIP],
  'third_party/*': [SKIP],
  'tools/*': [SKIP],
  'apply': [SKIP],
  'math-*': [SKIP],
  'unicode-test': [SKIP],
  'whitespaces': [SKIP],
}],  # variant == asm_wasm

]
