# Copyright 2011 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 prefixed with 'Bug' are expected to fail.
  'test-api/Bug*': [FAIL],

  ##############################################################################

  # These tests always fail.  They are here to test test.py.  If
  # they don't fail then test.py has failed.
  'test-serialize/TestThatAlwaysFails': [FAIL],
  'test-api/SealHandleScope': [FAIL],

  # These tests are expected to hit a CHECK (i.e. a FAIL result actually means
  # the test passed).
  'test-api/RegExpInterruptAndReenterIrregexp': [FAIL, CRASH],
  'test-verifiers/Fail*': [FAIL, CRASH],

  # This test always fails.  It tests that LiveEdit causes abort when turned off.
  'test-debug/LiveEditDisabled': [FAIL],

  # This test always fails.  It tests that DisallowJavascriptExecutionScope
  # works as intended.
  'test-api/DisallowJavascriptExecutionScope': [FAIL],

  # We do not yet shrink weak maps after they have been emptied by the GC
  'test-weakmaps/Shrinking': [FAIL],
  'test-weaksets/WeakSet_Shrinking': [FAIL],

  # Boot up memory use is bloated in debug mode.
  'test-mark-compact/BootUpMemoryUse': [PASS, ['mode == debug', FAIL]],

  # This tests only that the preparser and parser agree, so there is no point in
  # running several variants. Note that this still takes ages, because there
  # are actually 13 * 38 * 5 * 128 = 316160 individual tests hidden here.
  'test-parsing/ParserSync': [PASS, NO_VARIANTS],

  # This tests only the type system, no point in running several variants.
  'test-types/*': [PASS, NO_VARIANTS],

  # This tests API threading, no point in running several variants.
  'test-api/Threading*': [PASS, SLOW, NO_VARIANTS],

  # TODO(ulan): Renable after fixing the test's brittleness.
  'test-heap/OutOfMemory': [SKIP],

  # BUG(5193). The cpu profiler tests are notoriously flaky.
  'test-profile-generator/RecordStackTraceAtStartProfiling': [SKIP],
  'test-cpu-profiler/CollectDeoptEvents': [SKIP],
  'test-cpu-profiler/CollectCpuProfile': [SKIP],
  'test-cpu-profiler/JsNative1JsNative2JsSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSampleMultiple': [SKIP],
  'test-cpu-profiler/JsNativeJsSample': [SKIP],
  'test-cpu-profiler/HotDeoptNoFrameEntry': [SKIP],
  'test-cpu-profiler/SampleWhenFrameIsNotSetup': [SKIP],
  'test-sampler/LibSamplerCollectSample': [SKIP],

  # BUG(7202). The test is flaky.
  'test-cpu-profiler/NativeFrameStackTrace': [SKIP],

  # BUG(7054)
  'test-cpu-profiler/StaticCollectSampleAPI': [SKIP],

  # BUG(2340). Preprocessing stack traces is disabled at the moment.
  'test-heap/PreprocessStackTrace': [FAIL],

  # BUG(4333). Function name inferrer does not work for ES6 clases.
  'test-func-name-inference/UpperCaseClass': [FAIL],
  'test-func-name-inference/LowerCaseClass': [FAIL],

  # BUG(3742).
  'test-mark-compact/MarkCompactCollector': [PASS, ['arch==arm', NO_VARIANTS]],

  # Test that serialization with unknown external reference fails.
  'test-serialize/SnapshotCreatorUnknownExternalReferences': [FAIL],
  'test-serialize/SnapshotCreatorUnknownHandles': [FAIL],
  'test-serialize/SnapshotCreatorNoExternalReferencesCustomFail1': [FAIL],
  'test-serialize/SnapshotCreatorNoExternalReferencesCustomFail2': [FAIL],

  # BUG(v8:8296). Flaky OOM test.
  'test-heap/OutOfMemorySmallObjects': [SKIP],

  # BUG(v8:8739). Wasm interpreter does not create proper stack traces.
  'test-wasm-stack/RunWasmInterpreter_CollectDetailedWasmStack_WasmError': [SKIP],

  # https://crbug.com/v8/8919
  'test-platform/StackAlignment': [PASS, ['not is_clang', SKIP]],

  # Test that misuse of PopAndReturn does not compile.
  'test-code-stub-assembler/PopAndReturnFromJSBuiltinWithStackParameters' : [FAIL],
  'test-code-stub-assembler/PopAndReturnFromTFCBuiltinWithStackParameters' : [FAIL],

  ############################################################################
  # Slow tests.
  'test-debug/CallFunctionInDebugger': [PASS, ['mode == debug', SLOW]],
  'test-heap-profiler/ManyLocalsInSharedContext': [PASS, SLOW],
  'test-jump-table-assembler/JumpTablePatchingStress': [PASS, SLOW],
  'test-strings/StringOOM*': [PASS, ['mode == debug', SKIP]],
  'test-serialize/CustomSnapshotDataBlobImmortalImmovableRoots': [PASS, ['mode == debug', SKIP]],
  'test-parsing/ObjectRestNegativeTestSlow': [PASS, ['mode == debug', SKIP]],
}],  # ALWAYS

##############################################################################
['mode == debug', {
  # These tests are supposed to fail in a DCHECK.
  'test-persistent-handles/NewPersistentHandleFailsWhenParked': [FAIL],
  'test-persistent-handles/NewPersistentHandleFailsWhenParkedExplicit': [FAIL],
}],

##############################################################################
['tsan == True', {
  # BUG(v8:9869) TSAN considers SIGPROF an asynchronous signal, and will call
  # into the handler after the stack has drifted from the context on the
  # signal.
  'test-cpu-profiler/*': [SKIP],
}],

##############################################################################
['arch == arm64', {
  # BUG(v8:3385).
  'test-serialize/StartupSerializerOnceRunScript': [PASS, FAIL],
  'test-serialize/StartupSerializerTwiceRunScript': [PASS, FAIL],

  # BUG(v8:3154).
  'test-heap/ReleaseOverReservedPages': [PASS, FAIL],

  # BUG(v8:3155).
  'test-strings/OneByteArrayJoin': [PASS, ['mode == debug', FAIL]],

  # BUG(v8:3247).
  'test-mark-compact/NoPromotion': [SKIP],

  # BUG(v8:3446).
  'test-mark-compact/Promotion': [PASS, FAIL],

  # BUG(v8:3434).
  'test-api/LoadICFastApi_DirectCall_GCMoveStubWithProfiler': [SKIP],
}],  # 'arch == arm64'

['arch == arm64 and simulator_run', {

  # Pass but take too long with the simulator.
  'test-api/ExternalArrays': [PASS, SLOW],
  'test-api/Threading*': [SKIP],
  'test-cpu-profiler/MultipleIsolates': [PASS, ['not pointer_compression', SLOW]],
  'test-debug/DebugBreakStackTrace': [PASS, SLOW],
}],  # 'arch == arm64 and simulator_run'

['arch == arm64 and system == macos and not simulator_run', {
  # printf, being a variadic function, has a different, stack-based ABI on
  # Apple silicon. See:
  # https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html
  'test-assembler-arm64/printf_no_preserve': [SKIP],
}],  # arch == arm64 and system == macos and not simulator_run

##############################################################################
['variant == nooptimization and (arch == arm or arch == arm64) and simulator_run', {
  # Slow tests: https://crbug.com/v8/7783
  'test-cpu-profiler/MultipleIsolates': [SKIP],
}],  # variant == nooptimization and (arch == arm or arch == arm64) and simulator_run

##############################################################################
['variant == nooptimization', {
  # Wasm serialization relies on TurboFan to be available, hence does not work
  # in the 'nooptimization' variant.
  'test-wasm-serialization/*': [SKIP],
  'test-streaming-compilation/SingleThreadedTestDeserializationBypassesCompilation': [SKIP],
  'test-streaming-compilation/SingleThreadedTestDeserializationFails': [SKIP],
  'test-streaming-compilation/AsyncTestDeserializationFails': [SKIP],
  'test-streaming-compilation/AsyncTestDeserializationBypassesCompilation': [SKIP],
}],  # variant == nooptimization

##############################################################################
['asan == True', {
  # Skip tests not suitable for ASAN.
  'test-assembler-x64/AssemblerX64XchglOperations': [SKIP],

  # BUG(v8:7587): Strange breakage on Mac.
  'test-log-stack-tracer/PureJSStackTrace': [SKIP],
}],  # 'asan == True'

##############################################################################
['msan == True', {
  # ICU upstream issues.
  'test-strings/CountBreakIterator': [SKIP],

  # BUG(v8:10244): MSAN finding uninitialized bytes during memcmp
  'test-code-stub-assembler/SmallOrderedHashSetAllocate': [SKIP],
  'test-code-stub-assembler/SmallOrderedHashMapAllocate': [SKIP],
}],  # 'msan == True'

##############################################################################
['tsan == True', {
  # BUG(v8:6924). The test allocates a lot of memory.
  'test-api/NewStringRangeError': [PASS, NO_VARIANTS],
}],  # 'tsan == True'

##############################################################################
['is_full_debug', {
  # Tests too slow in non-optimized debug mode.
  'test-api/InternalFieldsSubclassing': [SKIP],
  'test-concurrent-allocation/ConcurrentAllocationInLargeSpace': [SKIP],
  'test-heap/TestInternalWeakLists': [SKIP],
}],  # 'is_full_debug'

##############################################################################
['byteorder == big', {
  # Skip Wasm atomic tests on big-endian machines.
  # There is no support to emulate atomic Wasm operations on big-endian
  # platforms, since this would require bit swapping as a part of atomic
  # operations.
  'test-run-wasm-atomics/*': [SKIP],
  'test-run-wasm-atomics64/*': [SKIP],
  'test-regexp/Peephole*': [SKIP],
}],  # 'byteorder == big'

##############################################################################
['system == windows', {
  # BUG(v8:4642).
  'test-lockers/LockAndUnlockDifferentIsolates': [PASS, NO_VARIANTS],

  # BUG(v8:8744).
  'test-cpu-profiler/FunctionCallSample': [SKIP],

  # BUG(10107): Failing flakily
  'test-cpu-profiler/Inlining2': ['arch == ia32 and mode == debug', SKIP],
  'test-cpu-profiler/CrossScriptInliningCallerLineNumbers2': ['arch == ia32 and mode == debug', SKIP],
}],  # 'system == windows'

##############################################################################
['system == windows and arch == x64 and mode == debug', {
  # BUG(v8:6328).
  'test-serialize/ContextSerializerCustomContext': [SKIP],
  'test-serialize/ContextSerializerObject': [SKIP],
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
}],  # 'system == windows and arch == x64 and mode == debug'

##############################################################################
['arch == arm and simulator_run', {
  # Pass but take too long with the simulator.
  'test-api/Threading*': [SKIP],
  'test-cpu-profiler/MultipleIsolates': [PASS, SLOW],
}],  # 'arch == arm and simulator_run'

##############################################################################
['arch == arm', {
  # BUG(355): Test crashes on ARM.
  'test-log/ProfLazyMode': [SKIP],

  # BUG(1075): Unresolved crashes.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
}],  # 'arch == arm'

##############################################################################
['arch == arm and not simulator_run', {
  # crbug.com/v8/7605
  'test-heap/OutOfMemorySmallObjects': [SKIP],
}],  # 'arch == arm and not simulator_run'

##############################################################################
['arch == mipsel or arch == mips', {
  # TODO(mips-team): Improve code-size on large RegExp's.
  'test-heap/TestSizeOfRegExpCode':  [SKIP],

  # BUG(1075): Unresolved crashes on MIPS also.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
}],  # 'arch == mipsel or arch == mips'

##############################################################################
['arch == mips', {
  # Too slow with TF.
  'test-api/ExternalArrays': [PASS, NO_VARIANTS],

  # TODO(mips-team): Currently fails on mips board.
  'test-parsing/TooManyArguments': [SKIP],
  'test-api/Threading5': [SKIP],
  'test-api/Threading6': [SKIP],
}],  # 'arch == mips'

##############################################################################
['arch == mips64', {
  # TODO(mips-team): Currently fails on mips64 board.
  'test-run-wasm/RunWasmLiftoff_I32Binop*': [SKIP],
}],  # 'arch == mips64'
##############################################################################
['arch == mips64el or arch == mips64', {
  # BUG(v8:3154).
  'test-heap/ReleaseOverReservedPages': [PASS, FAIL],

  # TODO(mips-team): Improve code-size on large RegExp's.
  'test-heap/TestSizeOfRegExpCode':  [SKIP],

  # BUG(1075): Unresolved crashes on MIPS also.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
}],  # 'arch == mips64el or arch == mips64'

##############################################################################
['(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips', {
  # Skip tests that fail on MIPS architectures which don't support SIMD,
  # because lowering mechanism doesn't work properly
  'test-run-wasm-simd/RunWasm_ReductionTest4_compiled': [SKIP],
  'test-run-wasm-simd/RunWasm_ReductionTest8_compiled': [SKIP],
  'test-run-wasm-simd/RunWasm_ReductionTest16_compiled': [SKIP],
  'test-run-wasm-simd-liftoff/*': [SKIP],
}],  # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips'

##############################################################################
['arch == mips or arch == mips64', {
  # TODO(mips-team): Implement I64Atomic operations on MIPS
  'test-run-wasm-atomics64/*': [SKIP],
}],  # 'arch == mipsel or arch == mips64el or arch == mips or arch == mips64'

##############################################################################
['mips_arch_variant == r6', {
  # For MIPS[64] architecture release 6, fusion multiply-accumulate instructions
  # will cause failures on several tests that expect exact floating-point
  # results.
  'test-run-machops/RunFloat64MulAndFloat64Add1': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Add2': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Sub1': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Sub2': [SKIP],
}],  # 'mips_arch_variant == r6'

##############################################################################
['system == android', {
  # Uses too much memory.
  'test-api/NewStringRangeError': [SKIP],
}],  # 'system == android'

##############################################################################
['system != android and arch in [arm, arm64] and not simulator_run', {
  # Consumes too much memory on ODROIDs in debug mode and optimize_for_size.
  'test-code-generator/FuzzAssemble*': [PASS, ['(mode == debug) and optimize_for_size', SKIP]],
}],  # 'system != android and arch in [arm, arm64] and not simulator_run'

##############################################################################
['system == aix or (arch == ppc64 and byteorder == big)', {

  # TODO(ppc): Fix for platforms with function desciptors.
  'test-run-machops/RunComputedCodeObject' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_Return114' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_CallAdd' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_CallMain_recursive' : [SKIP],
  # TODO(ppc): Implement load/store reverse byte instructions
  'test-run-wasm-simd/RunWasm_SimdLoadStoreLoad': [SKIP],
  'test-run-wasm-simd/RunWasm_SimdLoadStoreLoad_turbofan': [SKIP],

}],  # 'system == aix or (arch == ppc64 and byteorder == big)'

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

  # Pass but take too long with the simulator.
  'test-api/Threading*': [PASS, SLOW],
  'test-api/ExternalArrays': [PASS, SLOW],

}],  # 'arch == ppc64 and simulator_run'

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

  # TODO(ppc/s390): support concurrent patching of jump table
  'test-jump-table-assembler/*': [SKIP],

  # Liftoff is not currently supported on ppc and s390
  'test-liftoff-*': [SKIP],
  'test-wasm-breakpoints/*' : [SKIP],
  'test-wasm-debug-evaluate/*': [SKIP],
  'test-run-wasm-module/Run_WasmModule_CompilationHintsNoTiering': [SKIP],
  'test-wasm-serialization/TierDownAfterDeserialization': [SKIP],

  # SIMD not fully implemented yet
  'test-run-wasm-simd-liftoff/*': [SKIP],

}],  # 'arch == ppc or arch == ppc64 or arch == s390 or arch == s390x'

['arch == ppc64', {
  # https://crbug.com/v8/8766
  'test-bytecode-generator/WideRegisters': [SKIP],
}],

##############################################################################
['variant == stress_incremental_marking', {
  'test-heap-profiler/SamplingHeapProfiler': [SKIP],
}],  # variant == stress_incremental_marking

##############################################################################
['variant == stress_js_bg_compile_wasm_code_gc', {
  # The test relies on deterministic compilation.
  'test-compiler/DecideToPretenureDuringCompilation': [SKIP],

  # The test relies on deterministic allocation during compilation.
  'test-compiler/DeepEagerCompilationPeakMemory': [SKIP],
}],  # variant == stress_js_bg_compile_wasm_code_gc

##############################################################################
['variant == no_wasm_traps', {
  'test-accessors/*': [SKIP],
  'test-api-interceptors/*': [SKIP],
  'test-api-stack-traces/*': [SKIP],
  'test-api/*': [SKIP],
  'test-bignum-dtoa/*': [SKIP],
  'test-cpu-profiler/*': [SKIP],
  'test-debug/*': [SKIP],
  'test-global-handles/*': [SKIP],
  'test-heap-profiler/*': [SKIP],
  'test-heap/*': [SKIP],
  'test-inobject-slack-tracking/*': [SKIP],
  'test-lockers/*': [SKIP],
  'test-run-machops/*': [SKIP],
  'test-serialize/*': [SKIP],
  'test-strings/*': [SKIP],
  'test-field-type-tracking/*': [SKIP],
  'test-parsing/*': [SKIP],
  'test-page-promotion/*': [SKIP],
  'test-decls/*': [SKIP],
  'test-log/*': [SKIP],
  'test-gap-resolver/*': [SKIP],
  'test-dtoa/*': [SKIP],
}],  # variant == no_wasm_traps

##############################################################################
# The stack unwinder API is only supported on x64, arm64 and arm.
['arch != x64 and arch != arm64 and arch != arm', {
  'test-unwinder-code-pages/*': [SKIP]
}],

##############################################################################
['lite_mode or variant == jitless', {

  # Slow tests
  'test-heap/IncrementalMarkingStepMakesBigProgressWithLargeObjects': [SKIP],

  # TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
  'test-api/WasmI32AtomicWaitCallback': [SKIP],
  'test-api/WasmI64AtomicWaitCallback': [SKIP],
  'test-api-wasm/WasmStreaming*': [SKIP],
  'test-backing-store/Run_WasmModule_Buffer_Externalized_Regression_UseAfterFree': [SKIP],
  'test-c-wasm-entry/*': [SKIP],
  'test-compilation-cache/*': [SKIP],
  'test-jump-table-assembler/*': [SKIP],
  'test-gc/*': [SKIP],
  'test-grow-memory/*': [SKIP],
  'test-liftoff-inspection/*': [SKIP],
  'test-run-wasm-64/*': [SKIP],
  'test-run-wasm-asmjs/*': [SKIP],
  'test-run-wasm-atomics64/*': [SKIP],
  'test-run-wasm-atomics/*': [SKIP],
  'test-run-wasm-bulk-memory/*': [SKIP],
  'test-run-wasm/*': [SKIP],
  'test-run-wasm-exceptions/*': [SKIP],
  'test-run-wasm-interpreter/*': [SKIP],
  'test-run-wasm-js/*': [SKIP],
  'test-run-wasm-module/*': [SKIP],
  'test-run-wasm-sign-extension/*': [SKIP],
  'test-run-wasm-simd-liftoff/*': [SKIP],
  'test-run-wasm-simd-scalar-lowering/*': [SKIP],
  'test-run-wasm-simd/*': [SKIP],
  'test-run-wasm-wrappers/*': [SKIP],
  'test-streaming-compilation/*': [SKIP],
  'test-wasm-breakpoints/*': [SKIP],
  'test-wasm-codegen/*': [SKIP],
  'test-wasm-debug-evaluate/*': [SKIP],
  'test-wasm-import-wrapper-cache/*': [SKIP],
  'test-wasm-metrics/*': [SKIP],
  'test-wasm-serialization/*': [SKIP],
  'test-wasm-shared-engine/*': [SKIP],
  'test-wasm-stack/*': [SKIP],
  'test-wasm-trap-position/*': [SKIP],
  'wasm-run-utils/*': [SKIP],

  # Tests that generate code at runtime.
  'codegen-tester/*': [SKIP],
  'serializer-tester/*': [SKIP],
  'test-accessor-assembler/*': [SKIP],
  'test-assembler-*': [SKIP],
  'test-basic-block-profiler/*': [SKIP],
  'test-branch-combine/*': [SKIP],
  'test-code-assembler/*': [SKIP],
  'test-code-generator/*': [SKIP],
  'test-code-pages/*': [SKIP],
  'test-code-stub-assembler/*': [SKIP],
  'test-debug-helper/GetObjectProperties': [SKIP],
  'test-disasm-x64/DisasmX64': [SKIP],
  'test-js-context-specialization/*': [SKIP],
  'test-macro-assembler-x64/EmbeddedObj': [SKIP],
  'test-multiple-return/*': [SKIP],
  'test-regexp/MacroAssemblernativeAtStart': [SKIP],
  'test-regexp/MacroAssemblerNativeBackReferenceLATIN1': [SKIP],
  'test-regexp/MacroAssemblerNativeBackReferenceUC16': [SKIP],
  'test-regexp/MacroAssemblerNativeBackRefNoCase': [SKIP],
  'test-regexp/MacroAssemblerNativeBacktrack': [SKIP],
  'test-regexp/MacroAssemblerNativeLotsOfRegisters': [SKIP],
  'test-regexp/MacroAssemblerNativeRegisters': [SKIP],
  'test-regexp/MacroAssemblerNativeSimple': [SKIP],
  'test-regexp/MacroAssemblerNativeSimpleUC16': [SKIP],
  'test-regexp/MacroAssemblerNativeSuccess': [SKIP],
  'test-regexp/MacroAssemblerStackOverflow': [SKIP],
  'test-regexp/Graph': [SKIP],
  'test-run-bytecode-graph-builder/*': [SKIP],
  'test-run-calls-to-external-references/*': [SKIP],
  'test-run-deopt/*': [SKIP],
  'test-run-intrinsics/*': [SKIP],
  'test-run-jsbranches/*': [SKIP],
  'test-run-jscalls/*': [SKIP],
  'test-run-jsexceptions/*': [SKIP],
  'test-run-jsobjects/*': [SKIP],
  'test-run-jsops/*': [SKIP],
  'test-run-load-store/*': [SKIP],
  'test-run-machops/*': [SKIP],
  'test-run-native-calls/*': [SKIP],
  'test-run-retpoline/*': [SKIP],
  'test-run-stackcheck/*': [SKIP],
  'test-run-tail-calls/*': [SKIP],
  'test-run-unwinding-info/*': [SKIP],
  'test-run-variables/*': [SKIP],
  'test-serialize/*': [SKIP],
  'test-torque/*': [SKIP],
  'test-unwinder-code-pages/PCIsInV8_LargeCodeObject_CodePagesAPI': [SKIP],

  # Field representation tracking is disabled in jitless mode.
  'test-field-type-tracking/*': [SKIP],

  # Instruction cache flushing is disabled in jitless mode.
  'test-icache/*': [SKIP],
}], # lite_mode or variant == jitless

##############################################################################
['lite_mode', {
  # TODO(v8:8510): Tests that currently fail with lazy source positions.
  'test-cpu-profiler/Inlining2': [SKIP],

  # TODO(mythria): Code logging tests that currently fail with lazy feedback
  # allocation. Fix logging to work without feedback vectors and enable these
  # tests in lite_mode.
  'test-log/ExternalCodeEventListenerWithInterpretedFramesNativeStack': [SKIP],
  'test-log/LogInterpretedFramesNativeStack': [SKIP],
  'test-log/LogInterpretedFramesNativeStackWithSerialization': [SKIP],
  'test-serialize/CodeSerializerOnePlusOneWithInterpretedFramesNativeStack': [SKIP]
}], # lite_mode

##############################################################################
['variant == jitless', {
  # https://crbug.com/v8/7777
  'serializer-tester/SerializeCallAnyReceiver': [SKIP],
  'serializer-tester/SerializeCallArguments': [SKIP],
  'serializer-tester/SerializeCallProperty': [SKIP],
  'serializer-tester/SerializeCallProperty2': [SKIP],
  'serializer-tester/SerializeCallUndefinedReceiver': [SKIP],
  'serializer-tester/SerializeCallUndefinedReceiver2': [SKIP],
  'serializer-tester/SerializeCallWithSpread': [SKIP],
  'serializer-tester/SerializeConstruct': [SKIP],
  'serializer-tester/SerializeConstructWithSpread': [SKIP],
  'serializer-tester/SerializeInlinedClosure': [SKIP],
  'serializer-tester/SerializeInlinedFunction': [SKIP],
  'test-api/TurboAsmDisablesDetach': [SKIP],
  'test-cpu-profiler/TickLinesOptimized': [SKIP],
  'test-heap/TestOptimizeAfterBytecodeFlushingCandidate': [SKIP],
  'test-run-wasm-exceptions/RunWasmInterpreter_TryCatchCallDirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmInterpreter_TryCatchCallExternal': [SKIP],
  'test-run-wasm-exceptions/RunWasmInterpreter_TryCatchCallIndirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmInterpreter_TryCatchThrow': [SKIP],
  'test-run-wasm-exceptions/RunWasmInterpreter_TryCatchTrapTypeError': [SKIP],
  'test-run-wasm-exceptions/RunWasmLiftoff_TryCatchCallDirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmLiftoff_TryCatchCallExternal': [SKIP],
  'test-run-wasm-exceptions/RunWasmLiftoff_TryCatchCallIndirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmLiftoff_TryCatchThrow': [SKIP],
  'test-run-wasm-exceptions/RunWasmLiftoff_TryCatchTrapTypeError': [SKIP],
  'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchCallDirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchCallExternal': [SKIP],
  'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchCallIndirect': [SKIP],
  'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchThrow': [SKIP],
  'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchTrapTypeError': [SKIP],

  # --interpreted-frames-native-stack tests
  'test-log/ExternalCodeEventListenerWithInterpretedFramesNativeStack': [SKIP],
  'test-log/LogInterpretedFramesNativeStack': [SKIP],
  'test-log/LogInterpretedFramesNativeStackWithSerialization': [SKIP],
  'test-serialize/CodeSerializerOnePlusOneWithInterpretedFramesNativeStack': [SKIP],
  'test-interpreter/InterpreterWithNativeStack': [SKIP],

  # Crashes on native arm.
  'test-macro-assembler-arm/ExtractLane': [PASS, ['arch == arm and not simulator_run', SKIP]],
  'test-macro-assembler-arm/LoadAndStoreWithRepresentation': [PASS, ['arch == arm and not simulator_run', SKIP]],
  'test-macro-assembler-arm/ReplaceLane': [PASS, ['arch == arm and not simulator_run', SKIP]],

  # Too slow on arm64 simulator on Mac.
  'test-cpu-profiler/MultipleIsolates': [PASS, ['arch == arm64 and system == macos and simulator_run', SKIP]],
}], # variant == jitless

##############################################################################
['variant == turboprop', {
  # Require inlining.
  'test-cpu-profiler/DeoptAtFirstLevelInlinedSource': [SKIP],
  'test-cpu-profiler/DeoptAtSecondLevelInlinedSource': [SKIP],
  'test-cpu-profiler/DeoptUntrackedFunction': [SKIP],
  # Turboprop doesn't use call feedback and hence doesn't inline even if
  # the inlining flag is explicitly set.
  'test-cpu-profiler/DetailedSourcePositionAPI_Inlining': [SKIP],
  'serializer-tester/BoundFunctionArguments': [SKIP],
  'serializer-tester/BoundFunctionTarget': [SKIP],
}],  # variant == turboprop

##############################################################################
['no_i18n == True', {
  'test-regexp/UnicodePropertyEscapeCodeSize': [SKIP],
}],  # no_i18n == True

################################################################################
['variant == stress_snapshot', {
  '*': [SKIP],  # only relevant for mjsunit tests.
}],

################################################################################
['variant == nci or variant == nci_as_midtier', {
  # Optimizes and deopts differently than TurboFan.
  'test-api/FastApiCalls': [SKIP],
  'test-cpu-profiler/Deopt*': [SKIP],
  'test-cpu-profiler/DetailedSourcePositionAPI_Inlining': [SKIP],
  'test-cpu-profiler/DetailedSourcePositionAPI': [SKIP],
  'test-heap/CellsInOptimizedCodeAreWeak': [SKIP],
  'test-heap/EnsureAllocationSiteDependentCodesProcessed': [SKIP],
  'test-heap/NewSpaceObjectsInOptimizedCode': [SKIP],
  'test-heap/ObjectsInEagerlyDeoptimizedCodeAreWeak': [SKIP],
  'test-heap/ObjectsInOptimizedCodeAreWeak': [SKIP],
  'test-heap/OptimizedPretenuring*': [SKIP],
  'test-heap-profiler/SamplingHeapProfilerPretenuredInlineAllocations': [SKIP],
  'test-log/LogAll': [SKIP],

  # NCI code currently does not use the feedback vector's optimized code cache.
  'test-compiler/OptimizedCodeSharing1': [SKIP],
}],  # variant == nci or variant == nci_as_midtier

]
