//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// UNSUPPORTED: c++03, c++11, c++14

// <experimental/simd>
//
// [simd.traits]
// template <class T> struct is_abi_tag;
// template <class T> inline constexpr bool ex::is_abi_tag_v =
// ex::is_abi_tag<T>::value;

#include <cstdint>
#include <experimental/simd>
#include "test_macros.h"

namespace ex = std::experimental::parallelism_v2;

struct UserType {};

static_assert(ex::is_abi_tag<ex::simd_abi::native<std::int8_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::int16_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::int32_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::int64_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::uint8_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::uint16_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::uint32_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<std::uint64_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<float>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::native<double>>::value, "");

static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::int8_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::int16_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::int32_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::int64_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::uint8_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::uint16_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::uint32_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<std::uint64_t>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<float>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::compatible<double>>::value, "");

static_assert(ex::is_abi_tag<ex::simd_abi::scalar>::value, "");
static_assert(
    !std::is_same<ex::simd_abi::scalar, ex::simd_abi::fixed_size<1>>::value,
    "");

static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<1>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<2>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<3>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<4>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<5>>::value, "");
static_assert(ex::is_abi_tag<ex::simd_abi::fixed_size<32>>::value, "");

static_assert(!ex::is_abi_tag<void>::value, "");
static_assert(!ex::is_abi_tag<int>::value, "");
static_assert(!ex::is_abi_tag<float>::value, "");
static_assert(!ex::is_abi_tag<UserType>::value, "");
static_assert(!ex::is_abi_tag<ex::simd<int>>::value, "");
static_assert(!ex::is_abi_tag<ex::simd<float>>::value, "");
static_assert(!ex::is_abi_tag<ex::simd_mask<int>>::value, "");
static_assert(!ex::is_abi_tag<ex::simd_mask<float>>::value, "");

static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::int8_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::int16_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::int32_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::int64_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::uint8_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::uint16_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::uint32_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<std::uint64_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<float>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::native<double>>, "");

static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::int8_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::int16_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::int32_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::int64_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::uint8_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::uint16_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::uint32_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<std::uint64_t>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<float>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::compatible<double>>, "");

static_assert(ex::is_abi_tag_v<ex::simd_abi::scalar>, "");
static_assert(
    !std::is_same<ex::simd_abi::scalar, ex::simd_abi::fixed_size<1>>::value,
    "");

static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<1>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<2>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<3>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<4>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<5>>, "");
static_assert(ex::is_abi_tag_v<ex::simd_abi::fixed_size<32>>, "");

static_assert(!ex::is_abi_tag_v<void>, "");
static_assert(!ex::is_abi_tag_v<int>, "");
static_assert(!ex::is_abi_tag_v<float>, "");
static_assert(!ex::is_abi_tag_v<UserType>, "");
static_assert(!ex::is_abi_tag_v<ex::simd<int>>, "");
static_assert(!ex::is_abi_tag_v<ex::simd<float>>, "");
static_assert(!ex::is_abi_tag_v<ex::simd_mask<int>>, "");
static_assert(!ex::is_abi_tag_v<ex::simd_mask<float>>, "");

int main(int, char**) {
  return 0;
}
