# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

[
[ALWAYS, {
  #TODO(ahaas): Add additional stack checks on mips.
  'tests/skip-stack-guard-page': [PASS, ['arch == mipsel or arch == mips64el or ((arch == ppc or arch == ppc64 or arch == s390 or arch == s390x) and simulator_run)', SKIP]],
  # TODO(v8:9144): The MVP behavior when bounds-checking segments changed in
  # the bulk-memory proposal. Since we've enabled bulk-memory by default, we
  # need to update to use its testsuite.
  'tests/linking': [FAIL],

  # TODO(ahaas): Needs investigation, I disable the test for now.
  'tests/conversions': [PASS, ['system == windows and arch == ia32', FAIL]],

  # TODO(ahaas): Incorporate recent changes to the bulk-memory-operations
  # proposal.
  'tests/proposals/bulk-memory-operations/elem': [FAIL],
  'tests/proposals/bulk-memory-operations/data': [FAIL],
}],  # ALWAYS

['arch == mipsel or arch == mips64el or arch == mips or arch == mips64', {
  # These tests fail because mips does not support the correct NaN bit patterns.
  'tests/float_misc': [SKIP],
  'tests/float_exprs': [SKIP],
  'tests/f32': [SKIP],
  'tests/f64': [SKIP],
  'tests/f32_bitwise': [SKIP],
  'tests/f64_bitwise': [SKIP],
}],  # 'arch == mipsel or arch == mips64el or arch == mips or arch == mips64'

['(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simulator_run', {
  # This test fail because mips does not support the correct NaN bit patterns.
  # But it doesn't fail in simulator.
  'tests/conversions': [SKIP],
}],  # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simulator_run'

['arch == arm and not simulator_run', {
  # Too slow on chromebooks.
  'tests/br_table': [SKIP],
}],  # 'arch == arm and not simulator_run'

['arch == ppc or arch == ppc64', {
  # These tests fail because ppc float min and max doesn't convert sNaN to qNaN.
  'tests/f32': [SKIP],
  'tests/f64': [SKIP],
  # This test fails because ppc float to double doesn't convert sNaN to qNaN.
  'tests/conversions': [SKIP],
   'tests/proposals/reference-types/conversions':  [SKIP],
   'tests/proposals/bulk-memory-operations/conversions': [SKIP],
}],  # 'arch == ppc or arch == ppc64'

['arch == s390 or arch == s390x', {
  # These tests fail because s390 float min and max doesn't convert sNaN to qNaN.
  'tests/f32': [SKIP],
  'tests/f64': [SKIP],
}],  # 'arch == s390 or arch == s390x'

##############################################################################
['lite_mode or variant == jitless', {
  # TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
  '*': [SKIP],
}], # lite_mode or variant == jitless

##############################################################################
['variant == jitless and not embedded_builtins', {
  '*': [SKIP],
}], # variant == jitless and not embedded_builtins


]
