# 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, {
  # 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],

  ##############################################################################
  # TurboFan compiler failures.

  # TODO(verwaest): Some tests are over-restrictive about object layout.
  'array-constructor-feedback': [PASS, NO_VARIANTS],
  'array-feedback': [PASS, NO_VARIANTS],
  'compare-known-objects-slow': [PASS, NO_VARIANTS],
  'elements-kind': [PASS, NO_VARIANTS],
  'opt-elements-kind': [PASS, NO_VARIANTS],
  'smi-representation': [PASS, NO_VARIANTS],

  # Some tests are just too slow to run for now.
  'big-object-literal': [PASS, NO_VARIANTS],
  'bit-not': [PASS, NO_VARIANTS],
  'json2': [PASS, NO_VARIANTS],
  'packed-elements': [PASS, NO_VARIANTS],
  'string-indexof-1': [PASS, NO_VARIANTS],
  'unbox-double-arrays': [PASS, NO_VARIANTS],
  'unicode-test': [PASS, NO_VARIANTS],
  'whitespaces': [PASS, NO_VARIANTS],
  'compiler/osr-assert': [PASS, NO_VARIANTS],
  'ignition/regress-599001-verifyheap': [PASS, NO_VARIANTS],
  'es6/string-fromcodepoint': [PASS, NO_VARIANTS],
  'regress/regress-2185-2': [PASS, NO_VARIANTS],
  'regress/regress-2612': [PASS, NO_VARIANTS],

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

  # TODO(mstarzinger): Optimizing top-level code revealed some issues. Fix!
  'bitops-info': [PASS, NO_VARIANTS],  # fails on ARM hardware.
  'md5': [PASS, NO_VARIANTS],  # fails on ARM hardware.
  'debug-break-inline': [PASS, NO_VARIANTS],  # very flaky.
  'debug-compile-event-newfunction': [PASS, NO_VARIANTS],
  'debug-conditional-breakpoints': [PASS, NO_VARIANTS],
  'debug-evaluate-locals-optimized': [PASS, NO_VARIANTS],
  'debug-evaluate-locals-optimized-double': [PASS, NO_VARIANTS],
  'debug-evaluate-recursive': [PASS, NO_VARIANTS],  # only in no-snap debug.
  'debug-setbreakpoint': [PASS, NO_VARIANTS],  # only in no-snap debug.
  'debug-step': [PASS, NO_VARIANTS],  # windows only.
  'debug-step-2': [PASS, NO_VARIANTS],  # flaky in no-snap mode.
  'debug-step-3': [PASS, NO_VARIANTS],  # flaky in no-snap mode.
  'debug-stepframe-clearing': [PASS, NO_VARIANTS],  # only in no-snap debug.
  'debug-stepin-call-function-stub': [PASS, NO_VARIANTS],  # only in no-snap debug.
  'regress/regress-3717': [PASS, NO_VARIANTS],  # only in no-snap mode.
  'regress/regress-2451': [PASS, NO_VARIANTS],  # with custom snapshot and gc-stress.
  'debug-multiple-breakpoints': [PASS, NO_VARIANTS],  # with custom snapshot and gc-stress.
  'debug-listbreakpoints': [PASS, NO_VARIANTS],  # arm64 nosnap with turbofan
  'debug-enable-disable-breakpoints': [PASS, NO_VARIANTS],  #arm64 nosnap with turbofan.

  # Issue 4035: unexpected frame->context() in debugger
  'regress/regress-crbug-107996': [PASS, NO_VARIANTS],
  'regress/regress-crbug-171715': [PASS, NO_VARIANTS],
  'regress/regress-crbug-222893': [PASS, NO_VARIANTS],
  'regress/regress-crbug-323936': [PASS, NO_VARIANTS],
  'regress/regress-crbug-491943': [PASS, NO_VARIANTS],
  'regress/regress-325676': [PASS, NO_VARIANTS],
  'debug-evaluate-closure': [PASS, NO_VARIANTS],
  'debug-evaluate-with': [PASS, NO_VARIANTS],

  # TODO(mstarzinger): Optimizing top-level code flushed out some correctness
  # issues on ARM and ARM64.
  'es6/math-log2-log10': [PASS, NO_VARIANTS],  # on ARM and ARM64.
  'mirror-script': [PASS, NO_VARIANTS],  # on ARM64 only.

  # TODO(jarin/mstarzinger): Investigate debugger issues with TurboFan.
  'debug-evaluate-locals': [PASS, NO_VARIANTS],
  'debug-evaluate-locals-capturing': [PASS, NO_VARIANTS],
  'debug-liveedit-check-stack': [PASS, NO_VARIANTS],  # only in no-snap mode.
  'debug-liveedit-double-call': [PASS, NO_VARIANTS],
  'debug-set-variable-value': [PASS, NO_VARIANTS],
  'debug-stepout-scope-part1': [PASS, NO_VARIANTS],
  'debug-stepout-scope-part2': [PASS, NO_VARIANTS],
  'debug-stepout-scope-part3': [PASS, NO_VARIANTS],
  'es6/debug-evaluate-blockscopes': [PASS, NO_VARIANTS],
  # Issue 4055: Scope chain length observed by debugger is off.
  'es6/generators-debug-scopes': [PASS, NO_VARIANTS],

  # TODO(titzer): --always-opt incorrectly disables CrankShaft soft deopt points
  'result-table-min': [PASS, NO_VARIANTS],
  'result-table-max': [PASS, NO_VARIANTS],
  # TODO(titzer): too slow in --turbo mode due to O(n^2) graph verification.
  'regress/regress-1122': [PASS, NO_VARIANTS],

  # Assumptions about optimization need investigation in TurboFan.
  'regress-sync-optimized-lists': [PASS, NO_VARIANTS],
  'regress/regress-store-uncacheable': [PASS, NO_VARIANTS],

  # issue 4078:
  'allocation-site-info': [PASS, NO_VARIANTS],

  ##############################################################################
  # Too slow in debug mode with --stress-opt mode.
  'compiler/regress-stacktrace-methods': [PASS, ['mode == debug', SKIP]],
  'compiler/regress-funcaller': [PASS, ['mode == debug', SKIP]],
  '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]],

  # Skip endain dependent test for mips due to different typed views of the same
  # array buffer.
  'nans': [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],

  # BUG(v8:4458). TODO(mvstanton): reenable the test once --vector-stores is
  # prermanently enabled.
  'call-counts': [SKIP],

  # 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, ['mode == debug', SLOW]],
  'regress/regress-crbug-474297': [PASS, ['mode == debug', SLOW]],
  'es6/tail-call-megatest*': [PASS, SLOW, FAST_VARIANTS, ['tsan', SKIP]],

  # TODO(titzer): ASM->WASM tests on these platforms
  'wasm/asm-wasm': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el]', SKIP]],
  # TODO(branelson): Figure out why ignition + asm-wasm-stdlib fails.
  'wasm/asm-wasm-stdlib': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el] or ignition == True', SKIP]],
  'wasm/asm-wasm-literals': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el] or ignition == True', SKIP]],
  'wasm/asm-wasm-copy': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el]', SKIP]],
  'wasm/asm-wasm-deopt': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el]', SKIP]],
  'wasm/asm-wasm-switch': [PASS, ['arch in [arm, arm64, mips, mipsel, mips64, mips64el]', SKIP]],

  # TODO(branelson): Figure out why ignition + asm->wasm fails embenchen.
  'wasm/embenchen/*': [PASS, ['arch == arm64', SKIP], ['ignition == True', 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]],

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

  ############################################################################
  # Ignition

  # TODO(mythria, 4780): Related to type feedback for calls in interpreter.
  'array-literal-feedback': [PASS, NO_IGNITION],
  'regress/regress-4121': [PASS, NO_IGNITION],

  # TODO(mythria, 4764): lack of osr support.
  'regress/regress-2618': [PASS, NO_IGNITION],

  # TODO(mythria, 4764): lack of osr support. The tests waits in a loop
  # till it is optimized. So test timeouts.
  'array-literal-transitions': [PASS, NO_IGNITION],

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

  # BUG(rmcilroy,4989): Function is optimized without type feedback and so immediately deopts again, causing check failure in the test.
  'compiler/deopt-inlined-from-call': [PASS, NO_IGNITION],
  'compiler/increment-typefeedback': [PASS, NO_IGNITION],
  'compiler/manual-concurrent-recompile': [PASS, NO_IGNITION],
  'constant-folding-2': [PASS, NO_IGNITION],
  'debug-is-active': [PASS, NO_IGNITION],
  'deopt-with-fp-regs': [PASS, NO_IGNITION],
  'deserialize-optimize-inner': [PASS, NO_IGNITION],
  'div-mul-minus-one': [PASS, NO_IGNITION],
  'double-intrinsics': [PASS, NO_IGNITION],
  'elements-transition-hoisting': [PASS, NO_IGNITION],
  'es6/block-let-crankshaft': [PASS, NO_IGNITION],
  'es6/block-let-crankshaft-sloppy': [PASS, NO_IGNITION],
  'getters-on-elements': [PASS, NO_IGNITION],
  'harmony/do-expressions': [PASS, NO_IGNITION],
  'math-floor-of-div-minus-zero': [PASS, NO_IGNITION],
  'regress/regress-2132': [PASS, NO_IGNITION],
  'regress/regress-2339': [PASS, NO_IGNITION],
  'regress/regress-3176': [PASS, NO_IGNITION],
  'regress/regress-3709': [PASS, NO_IGNITION],
  'regress/regress-385565': [PASS, NO_IGNITION],
  'regress/regress-crbug-594183': [PASS, NO_IGNITION],
  'regress/regress-embedded-cons-string': [PASS, NO_IGNITION],
  'regress/regress-map-invalidation-2': [PASS, NO_IGNITION],
  'regress/regress-param-local-type': [PASS, NO_IGNITION],
  'regress/regress-prepare-break-while-recompile': [PASS, NO_IGNITION],
  'shift-for-integer-div': [PASS, NO_IGNITION],
  'sin-cos': [PASS, NO_IGNITION],
  'smi-mul-const': [PASS, NO_IGNITION],
  'smi-mul': [PASS, NO_IGNITION],
  'unary-minus-deopt': [PASS, NO_IGNITION],

  # TODO(rmcilroy,5038): Crashes in Deoptimizer::PatchCodeForDeoptimization on
  # nosnap builds when --stress-opt and --turbo-from-bytecode is enabled.
  'harmony/generators-turbo': [PASS, FAST_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],

  # 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:4754).
  'debug-referenced-by': [PASS, NO_VARIANTS],

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

  # BUG(v8:5053).
  'wasm/embenchen/fasta': [PASS, FAST_VARIANTS],
}],  # 'gc_stress == True'

##############################################################################
['no_i18n == True and mode == debug', {
  # Tests too slow for no18n debug.
  'regress/regress-1200351': [SKIP],
}],  # 'no_i18n == True and mode == debug'

##############################################################################
['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],

  # TODO(rmcilroy,4680): Arm64 specific timeouts.
  'asm/construct-double': [PASS, NO_IGNITION],
  'compiler/osr-one': [PASS, NO_IGNITION],
  'compiler/osr-two': [PASS, NO_IGNITION],
  'wasm/asm-wasm-i32': [PASS, NO_IGNITION],
  'wasm/asm-wasm-u32': [PASS, NO_IGNITION],
}],  # '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]],

  # Ignition.
  'es6/templates': [PASS, ['no_snap and mode == debug', NO_IGNITION]],
  'regress/regress-crbug-364374': [PASS, ['no_snap and mode == debug', NO_IGNITION]],
}],  # '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],

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

  # 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],

  # TODO(rmcilroy,4680): Arm specific timeouts.
  'compiler/osr-one': [PASS, NO_IGNITION],
  'compiler/osr-two': [PASS, NO_IGNITION],
  'regress/regress-1257': [PASS, NO_IGNITION],
}],  # '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 == x87', {
  # Turbofan will hit the known issue that x87 changes sNaN to qNaN by default.
  'regress/regress-undefined-nan': [SKIP],
  'regress/regress-crbug-242924': [SKIP],
}],  # 'arch == x87'

##############################################################################
['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': [PASS, ['mode == debug', 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'

##############################################################################
# Native Client uses the ARM simulator so will behave similarly to arm
# on mjsunit tests.
# TODO(bradchen): enable more tests for NaCl V8 when it stops using
# the ARM simulator.
##############################################################################
['arch == nacl_ia32 or arch == nacl_x64', {
  # There is no /tmp directory for NaCl runs
  'd8-os': [SKIP],

  # 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],

  # NaCl builds have problems with this test since Pepper_28.
  # V8 Issue 2786
  'math-exp-precision': [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],

  # Poor performance for NaCl V8 causes an assertion failure for this test.
  'regress/regress-165637': [SKIP],

  # Skip long running test that times out in debug mode and goes OOM on NaCl.
  'regress/regress-crbug-160010': [SKIP],

  # Skip tests that timout with turbofan.
  'regress/regress-1257': [PASS, NO_VARIANTS],
  'regress/regress-2618': [PASS, NO_VARIANTS],
  'regress/regress-298269': [PASS, NO_VARIANTS],
  'regress/regress-91008': [PASS, NO_VARIANTS],
  'compiler/osr-alignment': [PASS, NO_VARIANTS],
  'compiler/osr-one': [PASS, NO_VARIANTS],
  'compiler/osr-two': [PASS, NO_VARIANTS],
  'stack-traces-overflow': [PASS, NO_VARIANTS],
  'mirror-object': [PASS, NO_VARIANTS],

  # Bug(v8:2978).
  'lithium/MathExp': [PASS, FAIL],

  # Lead to OOM:
  'string-oom-*': [SKIP],

  # Crashes.
  'harmony/private': [SKIP],
}],  # 'arch == nacl_ia32 or arch == nacl_x64'

##############################################################################
['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],
}],  # '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],
}],  # 'arch == ppc64'

##############################################################################
['ignition or ignition_turbofan', {
  # TODO(mythria, 4780): Related to type feedback for calls in interpreter.
  'array-literal-feedback': [FAIL],
  'regress/regress-4121': [FAIL],

  # TODO(mythria, 4764): lack of osr support.
  'regress/regress-2618': [FAIL],
  # TODO(mythria, 4764): lack of osr support. The tests waits in a loop
  # till it is optimized. So test timeouts.
  'array-literal-transitions': [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(rmcilroy,5038): Crashes in Deoptimizer::PatchCodeForDeoptimization on
  # nosnap builds when --stress-opt and --turbo-from-bytecode is enabled.
  'harmony/generators-turbo': [PASS, FAST_VARIANTS],
  'regress/regress-crbug-352058': [SKIP],

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

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

['(ignition or 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],
}],  # (ignition or ignition_turbofan) and arch == arm64

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

['(ignition or 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],
}],  # (ignition or ignition_turbofan) and msan

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

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

]