# 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, {
  'skip-stack-guard-page': [PASS, ['((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.
  'linking': [FAIL],
  'binary-leb128': [FAIL],
  'elem': [FAIL],
  'data': [FAIL],

  # TODO(wasm): Roll newest tests into "js-types" repository.
  'proposals/js-types/exports': [FAIL],
  'proposals/js-types/globals': [FAIL],
  'proposals/js-types/linking': [FAIL],

  # TODO(wasm): Roll newest tests into "tail-call" repository.
  'proposals/tail-call/data': [FAIL],
  'proposals/tail-call/elem': [FAIL],
  'proposals/tail-call/exports': [FAIL],
  'proposals/tail-call/func': [FAIL],
  'proposals/tail-call/globals': [FAIL],
  'proposals/tail-call/imports': [FAIL],
  'proposals/tail-call/linking': [FAIL],
  'proposals/tail-call/type': [FAIL],

  # This test requires the reftypes flag to be disabled.
  'proposals/bulk-memory-operations/imports': [FAIL],

  # TODO(wasm): This test declares a table larger than allowed by the spec.
  'table': [FAIL],
  'proposals/reference-types/table': [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.
  'float_misc': [SKIP],
  'float_exprs': [SKIP],
  'f32': [SKIP],
  'f64': [SKIP],
  'f32_bitwise': [SKIP],
  'f64_bitwise': [SKIP],
  'proposals/reference-types/conversions':  [SKIP],
  'proposals/bulk-memory-operations/conversions': [SKIP],
  'proposals/js-types/f32': [SKIP],
  'proposals/js-types/f64': [SKIP],
  'proposals/js-types/f32_bitwise': [SKIP],
  'proposals/js-types/f64_bitwise': [SKIP],
  'proposals/js-types/float_exprs': [SKIP],
  'proposals/js-types/float_misc': [SKIP],
  'proposals/js-types/conversions': [SKIP],
  'proposals/bulk-memory-operations/f32': [SKIP],
  'proposals/bulk-memory-operations/f64': [SKIP],
  'proposals/reference-types/f32': [SKIP],
  'proposals/reference-types/f64': [SKIP],
  'proposals/bulk-memory-operations/float_misc': [SKIP],
  'proposals/reference-types/float_misc': [SKIP],
  'proposals/tail-call/f32': [SKIP],
  'proposals/tail-call/f32_bitwise': [SKIP],
  'proposals/tail-call/f64': [SKIP],
  'proposals/tail-call/f64_bitwise': [SKIP],
  'proposals/tail-call/float_exprs': [SKIP],
  'proposals/tail-call/float_misc': [SKIP],
  'proposals/tail-call/conversions': [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.
  'conversions': [SKIP],
}],  # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simulator_run'

['(arch == mipsel or arch == mips64el) and simulator_run', {
  # These tests need larger stack size on simulator.
  'skip-stack-guard-page': '--sim-stack-size=8192',
  'proposals/tail-call/skip-stack-guard-page': '--sim-stack-size=8192',
}],  # '(arch == mipsel or arch == mips64el) and simulator_run'

['arch == ppc or arch == ppc64', {
  # These tests fail because ppc float min and max doesn't convert sNaN to qNaN.
  'f32': [SKIP],
  'f64': [SKIP],
  'proposals/js-types/f32': [SKIP],
  'proposals/js-types/f64': [SKIP],
  'proposals/bulk-memory-operations/f32': [SKIP],
  'proposals/bulk-memory-operations/f64': [SKIP],
  'proposals/reference-types/f32': [SKIP],
  'proposals/reference-types/f64': [SKIP],
  'proposals/tail-call/f32': [SKIP],
  'proposals/tail-call/f64': [SKIP],
  # This test fails because ppc float to double doesn't convert sNaN to qNaN.
  'conversions': [SKIP],
  'proposals/js-types/conversions': [SKIP],
  'proposals/bulk-memory-operations/conversions': [SKIP],
  'proposals/reference-types/conversions':  [SKIP],
  'proposals/tail-call/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.
  'f32': [SKIP],
  'f64': [SKIP],
  'proposals/js-types/f32': [SKIP],
  'proposals/js-types/f64': [SKIP],
  'proposals/bulk-memory-operations/f32': [SKIP],
  'proposals/bulk-memory-operations/f64': [SKIP],
  'proposals/reference-types/f32': [SKIP],
  'proposals/reference-types/f64': [SKIP],
  'proposals/tail-call/f32': [SKIP],
  'proposals/tail-call/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 == stress_snapshot', {
  '*': [SKIP],  # only relevant for mjsunit tests.
}],

]