// RUN: %clang_cc1 -std=c++14 -Wno-unused-value %s -disable-llvm-passes -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s

// FIXME: Unfortunately there is no good way to validate that our values are
// correct since Vector types don't have operator [] implemented for constexpr.
// Instead, we need to use filecheck to ensure the emitted IR is correct. Once
// someone implements array subscript operator for these types as constexpr,
// this test should modified to jsut use static asserts.

using FourCharsVecSize __attribute__((vector_size(4))) = char;
using FourIntsVecSize __attribute__((vector_size(16))) = int;
using FourLongLongsVecSize __attribute__((vector_size(32))) = long long;
using FourFloatsVecSize __attribute__((vector_size(16))) = float;
using FourDoublesVecSize __attribute__((vector_size(32))) = double;

using FourCharsExtVec __attribute__((ext_vector_type(4))) = char;
using FourIntsExtVec __attribute__((ext_vector_type(4))) = int;
using FourLongLongsExtVec __attribute__((ext_vector_type(4))) = long long;
using FourFloatsExtVec __attribute__((ext_vector_type(4))) = float;
using FourDoublesExtVec __attribute__((ext_vector_type(4))) = double;

// Next a series of tests to make sure these operations are usable in
// constexpr functions. Template instantiations don't emit Winvalid-constexpr,
// so we have to do these as macros.
#define MathShiftOps(Type)                            \
  constexpr auto MathShiftOps##Type(Type a, Type b) { \
    a = a + b;                                        \
    a = a - b;                                        \
    a = a * b;                                        \
    a = a / b;                                        \
    b = a + 1;                                        \
    b = a - 1;                                        \
    b = a * 1;                                        \
    b = a / 1;                                        \
    a += a;                                           \
    a -= a;                                           \
    a *= a;                                           \
    a /= a;                                           \
    b += a;                                           \
    b -= a;                                           \
    b *= a;                                           \
    b /= a;                                           \
    a < b;                                            \
    a > b;                                            \
    a <= b;                                           \
    a >= b;                                           \
    a == b;                                           \
    a != b;                                           \
    a &&b;                                            \
    a || b;                                           \
    auto c = (a, b);                                  \
    return c;                                         \
  }

// Ops specific to Integers.
#define MathShiftOpsInts(Type)                            \
  constexpr auto MathShiftopsInts##Type(Type a, Type b) { \
    a = a << b;                                           \
    a = a >> b;                                           \
    a = a << 3;                                           \
    a = a >> 3;                                           \
    a = 3 << b;                                           \
    a = 3 >> b;                                           \
    a <<= b;                                              \
    a >>= b;                                              \
    a <<= 3;                                              \
    a >>= 3;                                              \
    a = a % b;                                            \
    a &b;                                                 \
    a | b;                                                \
    a ^ b;                                                \
    return a;                                             \
  }

MathShiftOps(FourCharsVecSize);
MathShiftOps(FourIntsVecSize);
MathShiftOps(FourLongLongsVecSize);
MathShiftOps(FourFloatsVecSize);
MathShiftOps(FourDoublesVecSize);
MathShiftOps(FourCharsExtVec);
MathShiftOps(FourIntsExtVec);
MathShiftOps(FourLongLongsExtVec);
MathShiftOps(FourFloatsExtVec);
MathShiftOps(FourDoublesExtVec);

MathShiftOpsInts(FourCharsVecSize);
MathShiftOpsInts(FourIntsVecSize);
MathShiftOpsInts(FourLongLongsVecSize);
MathShiftOpsInts(FourCharsExtVec);
MathShiftOpsInts(FourIntsExtVec);
MathShiftOpsInts(FourLongLongsExtVec);

template <typename T, typename U>
constexpr auto CmpMul(T t, U u) {
  t *= u;
  return t;
}
template <typename T, typename U>
constexpr auto CmpDiv(T t, U u) {
  t /= u;
  return t;
}
template <typename T, typename U>
constexpr auto CmpRem(T t, U u) {
  t %= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpAdd(T t, U u) {
  t += u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpSub(T t, U u) {
  t -= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpLSH(T t, U u) {
  t <<= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpRSH(T t, U u) {
  t >>= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpBinAnd(T t, U u) {
  t &= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpBinXOr(T t, U u) {
  t ^= u;
  return t;
}

template <typename T, typename U>
constexpr auto CmpBinOr(T t, U u) {
  t |= u;
  return t;
}

// Only int vs float makes a difference here, so we only need to test 1 of each.
// Test Char to make sure the mixed-nature of shifts around char is evident.
void CharUsage() {
  constexpr auto a = FourCharsVecSize{6, 3, 2, 1} +
                     FourCharsVecSize{12, 15, 5, 7};
  // CHECK: store <4 x i8> <i8 18, i8 18, i8 7, i8 8>
  constexpr auto b = FourCharsVecSize{19, 15, 13, 12} -
                     FourCharsVecSize{13, 14, 5, 3};
  // CHECK: store <4 x i8> <i8 6, i8 1, i8 8, i8 9>
  constexpr auto c = FourCharsVecSize{8, 4, 2, 1} *
                     FourCharsVecSize{3, 4, 5, 6};
  // CHECK: store <4 x i8> <i8 24, i8 16, i8 10, i8 6>
  constexpr auto d = FourCharsVecSize{12, 12, 10, 10} /
                     FourCharsVecSize{6, 4, 5, 2};
  // CHECK: store <4 x i8> <i8 2, i8 3, i8 2, i8 5>
  constexpr auto e = FourCharsVecSize{12, 12, 10, 10} %
                     FourCharsVecSize{6, 4, 4, 3};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 2, i8 1>

  constexpr auto f = FourCharsVecSize{6, 3, 2, 1} + 3;
  // CHECK: store <4 x i8> <i8 9, i8 6, i8 5, i8 4>
  constexpr auto g = FourCharsVecSize{19, 15, 12, 10} - 3;
  // CHECK: store <4 x i8> <i8 16, i8 12, i8 9, i8 7>
  constexpr auto h = FourCharsVecSize{8, 4, 2, 1} * 3;
  // CHECK: store <4 x i8> <i8 24, i8 12, i8 6, i8 3>
  constexpr auto j = FourCharsVecSize{12, 15, 18, 21} / 3;
  // CHECK: store <4 x i8> <i8 4, i8 5, i8 6, i8 7>
  constexpr auto k = FourCharsVecSize{12, 17, 19, 22} % 3;
  // CHECK: store <4 x i8> <i8 0, i8 2, i8 1, i8 1>

  constexpr auto l = 3 + FourCharsVecSize{6, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 9, i8 6, i8 5, i8 4>
  constexpr auto m = 20 - FourCharsVecSize{19, 15, 12, 10};
  // CHECK: store <4 x i8> <i8 1, i8 5, i8 8, i8 10>
  constexpr auto n = 3 * FourCharsVecSize{8, 4, 2, 1};
  // CHECK: store <4 x i8> <i8 24, i8 12, i8 6, i8 3>
  constexpr auto o = 100 / FourCharsVecSize{12, 15, 18, 21};
  // CHECK: store <4 x i8> <i8 8, i8 6, i8 5, i8 4>
  constexpr auto p = 100 % FourCharsVecSize{12, 15, 18, 21};
  // CHECK: store <4 x i8> <i8 4, i8 10, i8 10, i8 16>

  constexpr auto q = FourCharsVecSize{6, 3, 2, 1} << FourCharsVecSize{1, 1, 2, 2};
  // CHECK: store <4 x i8> <i8 12, i8 6, i8 8, i8 4>
  constexpr auto r = FourCharsVecSize{19, 15, 12, 10} >>
                     FourCharsVecSize{1, 1, 2, 2};
  // CHECK: store <4 x i8> <i8 9, i8 7, i8 3, i8 2>
  constexpr auto s = FourCharsVecSize{6, 3, 5, 10} << 1;
  // CHECK: store <4 x i8> <i8 12, i8 6, i8 10, i8 20>
  constexpr auto t = FourCharsVecSize{19, 15, 10, 20} >> 1;
  // CHECK: store <4 x i8> <i8 9, i8 7, i8 5, i8 10>
  constexpr auto u = 12 << FourCharsVecSize{1, 2, 3, 3};
  // CHECK: store <4 x i8> <i8 24, i8 48, i8 96, i8 96>
  constexpr auto v = 12 >> FourCharsVecSize{1, 2, 2, 1};
  // CHECK: store <4 x i8> <i8 6, i8 3, i8 3, i8 6>

  constexpr auto w = FourCharsVecSize{1, 2, 3, 4} <
                     FourCharsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 0>
  constexpr auto x = FourCharsVecSize{1, 2, 3, 4} >
                     FourCharsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto y = FourCharsVecSize{1, 2, 3, 4} <=
                     FourCharsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>
  constexpr auto z = FourCharsVecSize{1, 2, 3, 4} >=
                     FourCharsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto A = FourCharsVecSize{1, 2, 3, 4} ==
                     FourCharsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 0>
  constexpr auto B = FourCharsVecSize{1, 2, 3, 4} !=
                     FourCharsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 1>

  constexpr auto C = FourCharsVecSize{1, 2, 3, 4} < 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 0>
  constexpr auto D = FourCharsVecSize{1, 2, 3, 4} > 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 0, i8 1>
  constexpr auto E = FourCharsVecSize{1, 2, 3, 4} <= 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>
  constexpr auto F = FourCharsVecSize{1, 2, 3, 4} >= 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto G = FourCharsVecSize{1, 2, 3, 4} == 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 0>
  constexpr auto H = FourCharsVecSize{1, 2, 3, 4} != 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 1>

  constexpr auto I = FourCharsVecSize{1, 2, 3, 4} &
                     FourCharsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 0, i8 2, i8 2, i8 0>
  constexpr auto J = FourCharsVecSize{1, 2, 3, 4} ^
                     FourCharsVecSize { 4, 3, 2, 1 };
  // CHECK: store <4 x i8> <i8 5, i8 1, i8 1, i8 5>
  constexpr auto K = FourCharsVecSize{1, 2, 3, 4} |
                     FourCharsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 5, i8 3, i8 3, i8 5>
  constexpr auto L = FourCharsVecSize{1, 2, 3, 4} & 3;
  // CHECK: store <4 x i8> <i8 1, i8 2, i8 3, i8 0>
  constexpr auto M = FourCharsVecSize{1, 2, 3, 4} ^ 3;
  // CHECK: store <4 x i8> <i8 2, i8 1, i8 0, i8 7>
  constexpr auto N = FourCharsVecSize{1, 2, 3, 4} | 3;
  // CHECK: store <4 x i8> <i8 3, i8 3, i8 3, i8 7>

  constexpr auto O = FourCharsVecSize{5, 0, 6, 0} &&
                     FourCharsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i8> <i8 1, i8 0, i8 0, i8 0>
  constexpr auto P = FourCharsVecSize{5, 0, 6, 0} ||
                     FourCharsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>

  constexpr auto Q = FourCharsVecSize{5, 0, 6, 0} && 3;
  // CHECK: store <4 x i8> <i8 1, i8 0, i8 1, i8 0>
  constexpr auto R = FourCharsVecSize{5, 0, 6, 0} || 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 1>

  constexpr auto T = CmpMul(a, b);
  // CHECK: store <4 x i8> <i8 108, i8 18, i8 56, i8 72>

  constexpr auto U = CmpDiv(a, b);
  // CHECK: store <4 x i8> <i8 3, i8 18, i8 0, i8 0>

  constexpr auto V = CmpRem(a, b);
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 7, i8 8>

  constexpr auto X = CmpAdd(a, b);
  // CHECK: store <4 x i8> <i8 24, i8 19, i8 15, i8 17>

  constexpr auto Y = CmpSub(a, b);
  // CHECK: store <4 x i8> <i8 12, i8 17, i8 -1, i8 -1>

  constexpr auto Z = CmpLSH(a, H);
  // CHECK: store <4 x i8> <i8 36, i8 36, i8 7, i8 16>

  constexpr auto aa = CmpRSH(a, H);
  // CHECK: store <4 x i8> <i8 9, i8 9, i8 7, i8 4>

  constexpr auto ab = CmpBinAnd(a, b);
  // CHECK: store <4 x i8> <i8 2, i8 0, i8 0, i8 8>

  constexpr auto ac = CmpBinXOr(a, b);
  // CHECK: store <4 x i8> <i8 20, i8 19, i8 15, i8 1>

  constexpr auto ad = CmpBinOr(a, b);
  // CHECK: store <4 x i8> <i8 22, i8 19, i8 15, i8 9>
}

void CharExtVecUsage() {
  constexpr auto a = FourCharsExtVec{6, 3, 2, 1} +
                     FourCharsExtVec{12, 15, 5, 7};
  // CHECK: store <4 x i8> <i8 18, i8 18, i8 7, i8 8>
  constexpr auto b = FourCharsExtVec{19, 15, 13, 12} -
                     FourCharsExtVec{13, 14, 5, 3};
  // CHECK: store <4 x i8> <i8 6, i8 1, i8 8, i8 9>
  constexpr auto c = FourCharsExtVec{8, 4, 2, 1} *
                     FourCharsExtVec{3, 4, 5, 6};
  // CHECK: store <4 x i8> <i8 24, i8 16, i8 10, i8 6>
  constexpr auto d = FourCharsExtVec{12, 12, 10, 10} /
                     FourCharsExtVec{6, 4, 5, 2};
  // CHECK: store <4 x i8> <i8 2, i8 3, i8 2, i8 5>
  constexpr auto e = FourCharsExtVec{12, 12, 10, 10} %
                     FourCharsExtVec{6, 4, 4, 3};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 2, i8 1>

  constexpr auto f = FourCharsExtVec{6, 3, 2, 1} + 3;
  // CHECK: store <4 x i8> <i8 9, i8 6, i8 5, i8 4>
  constexpr auto g = FourCharsExtVec{19, 15, 12, 10} - 3;
  // CHECK: store <4 x i8> <i8 16, i8 12, i8 9, i8 7>
  constexpr auto h = FourCharsExtVec{8, 4, 2, 1} * 3;
  // CHECK: store <4 x i8> <i8 24, i8 12, i8 6, i8 3>
  constexpr auto j = FourCharsExtVec{12, 15, 18, 21} / 3;
  // CHECK: store <4 x i8> <i8 4, i8 5, i8 6, i8 7>
  constexpr auto k = FourCharsExtVec{12, 17, 19, 22} % 3;
  // CHECK: store <4 x i8> <i8 0, i8 2, i8 1, i8 1>

  constexpr auto l = 3 + FourCharsExtVec{6, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 9, i8 6, i8 5, i8 4>
  constexpr auto m = 20 - FourCharsExtVec{19, 15, 12, 10};
  // CHECK: store <4 x i8> <i8 1, i8 5, i8 8, i8 10>
  constexpr auto n = 3 * FourCharsExtVec{8, 4, 2, 1};
  // CHECK: store <4 x i8> <i8 24, i8 12, i8 6, i8 3>
  constexpr auto o = 100 / FourCharsExtVec{12, 15, 18, 21};
  // CHECK: store <4 x i8> <i8 8, i8 6, i8 5, i8 4>
  constexpr auto p = 100 % FourCharsExtVec{12, 15, 18, 21};
  // CHECK: store <4 x i8> <i8 4, i8 10, i8 10, i8 16>

  constexpr auto q = FourCharsExtVec{6, 3, 2, 1} << FourCharsVecSize{1, 1, 2, 2};
  // CHECK: store <4 x i8> <i8 12, i8 6, i8 8, i8 4>
  constexpr auto r = FourCharsExtVec{19, 15, 12, 10} >>
                     FourCharsExtVec{1, 1, 2, 2};
  // CHECK: store <4 x i8> <i8 9, i8 7, i8 3, i8 2>
  constexpr auto s = FourCharsExtVec{6, 3, 5, 10} << 1;
  // CHECK: store <4 x i8> <i8 12, i8 6, i8 10, i8 20>
  constexpr auto t = FourCharsExtVec{19, 15, 10, 20} >> 1;
  // CHECK: store <4 x i8> <i8 9, i8 7, i8 5, i8 10>
  constexpr auto u = 12 << FourCharsExtVec{1, 2, 3, 3};
  // CHECK: store <4 x i8> <i8 24, i8 48, i8 96, i8 96>
  constexpr auto v = 12 >> FourCharsExtVec{1, 2, 2, 1};
  // CHECK: store <4 x i8> <i8 6, i8 3, i8 3, i8 6>

  constexpr auto w = FourCharsExtVec{1, 2, 3, 4} <
                     FourCharsExtVec{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 0>
  constexpr auto x = FourCharsExtVec{1, 2, 3, 4} >
                     FourCharsExtVec{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto y = FourCharsExtVec{1, 2, 3, 4} <=
                     FourCharsExtVec{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>
  constexpr auto z = FourCharsExtVec{1, 2, 3, 4} >=
                     FourCharsExtVec{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto A = FourCharsExtVec{1, 2, 3, 4} ==
                     FourCharsExtVec{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 0>
  constexpr auto B = FourCharsExtVec{1, 2, 3, 4} !=
                     FourCharsExtVec{4, 3, 3, 1};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 1>

  constexpr auto C = FourCharsExtVec{1, 2, 3, 4} < 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 0>
  constexpr auto D = FourCharsExtVec{1, 2, 3, 4} > 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 0, i8 1>
  constexpr auto E = FourCharsExtVec{1, 2, 3, 4} <= 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>
  constexpr auto F = FourCharsExtVec{1, 2, 3, 4} >= 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 1>
  constexpr auto G = FourCharsExtVec{1, 2, 3, 4} == 3;
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 1, i8 0>
  constexpr auto H = FourCharsExtVec{1, 2, 3, 4} != 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 0, i8 1>

  constexpr auto I = FourCharsExtVec{1, 2, 3, 4} &
                     FourCharsExtVec{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 0, i8 2, i8 2, i8 0>
  constexpr auto J = FourCharsExtVec{1, 2, 3, 4} ^
                     FourCharsExtVec { 4, 3, 2, 1 };
  // CHECK: store <4 x i8> <i8 5, i8 1, i8 1, i8 5>
  constexpr auto K = FourCharsExtVec{1, 2, 3, 4} |
                     FourCharsExtVec{4, 3, 2, 1};
  // CHECK: store <4 x i8> <i8 5, i8 3, i8 3, i8 5>
  constexpr auto L = FourCharsExtVec{1, 2, 3, 4} & 3;
  // CHECK: store <4 x i8> <i8 1, i8 2, i8 3, i8 0>
  constexpr auto M = FourCharsExtVec{1, 2, 3, 4} ^ 3;
  // CHECK: store <4 x i8> <i8 2, i8 1, i8 0, i8 7>
  constexpr auto N = FourCharsExtVec{1, 2, 3, 4} | 3;
  // CHECK: store <4 x i8> <i8 3, i8 3, i8 3, i8 7>

  constexpr auto O = FourCharsExtVec{5, 0, 6, 0} &&
                     FourCharsExtVec{5, 5, 0, 0};
  // CHECK: store <4 x i8> <i8 1, i8 0, i8 0, i8 0>
  constexpr auto P = FourCharsExtVec{5, 0, 6, 0} ||
                     FourCharsExtVec{5, 5, 0, 0};
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 0>

  constexpr auto Q = FourCharsExtVec{5, 0, 6, 0} && 3;
  // CHECK: store <4 x i8> <i8 1, i8 0, i8 1, i8 0>
  constexpr auto R = FourCharsExtVec{5, 0, 6, 0} || 3;
  // CHECK: store <4 x i8> <i8 1, i8 1, i8 1, i8 1>

  constexpr auto T = CmpMul(a, b);
  // CHECK: store <4 x i8> <i8 108, i8 18, i8 56, i8 72>

  constexpr auto U = CmpDiv(a, b);
  // CHECK: store <4 x i8> <i8 3, i8 18, i8 0, i8 0>

  constexpr auto V = CmpRem(a, b);
  // CHECK: store <4 x i8> <i8 0, i8 0, i8 7, i8 8>

  constexpr auto X = CmpAdd(a, b);
  // CHECK: store <4 x i8> <i8 24, i8 19, i8 15, i8 17>

  constexpr auto Y = CmpSub(a, b);
  // CHECK: store <4 x i8> <i8 12, i8 17, i8 -1, i8 -1>

  constexpr auto Z = CmpLSH(a, H);
  // CHECK: store <4 x i8> <i8 36, i8 36, i8 7, i8 16>

  constexpr auto aa = CmpRSH(a, H);
  // CHECK: store <4 x i8> <i8 9, i8 9, i8 7, i8 4>

  constexpr auto ab = CmpBinAnd(a, b);
  // CHECK: store <4 x i8> <i8 2, i8 0, i8 0, i8 8>

  constexpr auto ac = CmpBinXOr(a, b);
  // CHECK: store <4 x i8> <i8 20, i8 19, i8 15, i8 1>

  constexpr auto ad = CmpBinOr(a, b);
  // CHECK: store <4 x i8> <i8 22, i8 19, i8 15, i8 9>
}

void FloatUsage() {
  constexpr auto a = FourFloatsVecSize{6, 3, 2, 1} +
                     FourFloatsVecSize{12, 15, 5, 7};
  // CHECK: <4 x float> <float 1.800000e+01, float 1.800000e+01, float 7.000000e+00, float 8.000000e+00>
  constexpr auto b = FourFloatsVecSize{19, 15, 13, 12} -
                     FourFloatsVecSize{13, 14, 5, 3};
  // CHECK: store <4 x float> <float 6.000000e+00, float 1.000000e+00, float 8.000000e+00, float 9.000000e+00>
  constexpr auto c = FourFloatsVecSize{8, 4, 2, 1} *
                     FourFloatsVecSize{3, 4, 5, 6};
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.600000e+01, float 1.000000e+01, float 6.000000e+00>
  constexpr auto d = FourFloatsVecSize{12, 12, 10, 10} /
                     FourFloatsVecSize{6, 4, 5, 2};
  // CHECK: store <4 x float> <float 2.000000e+00, float 3.000000e+00, float 2.000000e+00, float 5.000000e+00>

  constexpr auto f = FourFloatsVecSize{6, 3, 2, 1} + 3;
  // CHECK: store <4 x float> <float 9.000000e+00, float 6.000000e+00, float 5.000000e+00, float 4.000000e+00>
  constexpr auto g = FourFloatsVecSize{19, 15, 12, 10} - 3;
  // CHECK: store <4 x float> <float 1.600000e+01, float 1.200000e+01, float 9.000000e+00, float 7.000000e+00>
  constexpr auto h = FourFloatsVecSize{8, 4, 2, 1} * 3;
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.200000e+01, float 6.000000e+00, float 3.000000e+00>
  constexpr auto j = FourFloatsVecSize{12, 15, 18, 21} / 3;
  // CHECK: store <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>

  constexpr auto l = 3 + FourFloatsVecSize{6, 3, 2, 1};
  // CHECK: store <4 x float> <float 9.000000e+00, float 6.000000e+00, float 5.000000e+00, float 4.000000e+00>
  constexpr auto m = 20 - FourFloatsVecSize{19, 15, 12, 10};
  // CHECK: store <4 x float> <float 1.000000e+00, float 5.000000e+00, float 8.000000e+00, float 1.000000e+01>
  constexpr auto n = 3 * FourFloatsVecSize{8, 4, 2, 1};
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.200000e+01, float 6.000000e+00, float 3.000000e+00>
  constexpr auto o = 100 / FourFloatsVecSize{12, 15, 18, 21};
  // CHECK: store <4 x float> <float 0x4020AAAAA0000000, float 0x401AAAAAA0000000, float 0x401638E380000000, float 0x40130C30C0000000>

  constexpr auto w = FourFloatsVecSize{1, 2, 3, 4} <
                     FourFloatsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  constexpr auto x = FourFloatsVecSize{1, 2, 3, 4} >
                     FourFloatsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto y = FourFloatsVecSize{1, 2, 3, 4} <=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>
  constexpr auto z = FourFloatsVecSize{1, 2, 3, 4} >=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto A = FourFloatsVecSize{1, 2, 3, 4} ==
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 0>
  constexpr auto B = FourFloatsVecSize{1, 2, 3, 4} !=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 1>

  constexpr auto C = FourFloatsVecSize{1, 2, 3, 4} < 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  constexpr auto D = FourFloatsVecSize{1, 2, 3, 4} > 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 0, i32 1>
  constexpr auto E = FourFloatsVecSize{1, 2, 3, 4} <= 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>
  constexpr auto F = FourFloatsVecSize{1, 2, 3, 4} >= 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto G = FourFloatsVecSize{1, 2, 3, 4} == 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 0>
  constexpr auto H = FourFloatsVecSize{1, 2, 3, 4} != 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 1>

  constexpr auto O = FourFloatsVecSize{5, 0, 6, 0} &&
                     FourFloatsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i32> <i32 1, i32 0, i32 0, i32 0>
  constexpr auto P = FourFloatsVecSize{5, 0, 6, 0} ||
                     FourFloatsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>

  constexpr auto Q = FourFloatsVecSize{5, 0, 6, 0} && 3;
  // CHECK: store <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  constexpr auto R = FourFloatsVecSize{5, 0, 6, 0} || 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 1>

  constexpr auto T = CmpMul(a, b);
  // CHECK: store <4 x float> <float 1.080000e+02, float 1.800000e+01, float 5.600000e+01, float 7.200000e+01>

  constexpr auto U = CmpDiv(a, b);
  // CHECK: store <4 x float> <float 3.000000e+00, float 1.800000e+01, float 8.750000e-01, float 0x3FEC71C720000000>

  constexpr auto X = CmpAdd(a, b);
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.900000e+01, float 1.500000e+01, float 1.700000e+01>

  constexpr auto Y = CmpSub(a, b);
  // CHECK: store <4 x float> <float 1.200000e+01, float 1.700000e+01, float -1.000000e+00, float -1.000000e+00>
}

void FloatVecUsage() {
  constexpr auto a = FourFloatsVecSize{6, 3, 2, 1} +
                     FourFloatsVecSize{12, 15, 5, 7};
  // CHECK: <4 x float> <float 1.800000e+01, float 1.800000e+01, float 7.000000e+00, float 8.000000e+00>
  constexpr auto b = FourFloatsVecSize{19, 15, 13, 12} -
                     FourFloatsVecSize{13, 14, 5, 3};
  // CHECK: store <4 x float> <float 6.000000e+00, float 1.000000e+00, float 8.000000e+00, float 9.000000e+00>
  constexpr auto c = FourFloatsVecSize{8, 4, 2, 1} *
                     FourFloatsVecSize{3, 4, 5, 6};
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.600000e+01, float 1.000000e+01, float 6.000000e+00>
  constexpr auto d = FourFloatsVecSize{12, 12, 10, 10} /
                     FourFloatsVecSize{6, 4, 5, 2};
  // CHECK: store <4 x float> <float 2.000000e+00, float 3.000000e+00, float 2.000000e+00, float 5.000000e+00>

  constexpr auto f = FourFloatsVecSize{6, 3, 2, 1} + 3;
  // CHECK: store <4 x float> <float 9.000000e+00, float 6.000000e+00, float 5.000000e+00, float 4.000000e+00>
  constexpr auto g = FourFloatsVecSize{19, 15, 12, 10} - 3;
  // CHECK: store <4 x float> <float 1.600000e+01, float 1.200000e+01, float 9.000000e+00, float 7.000000e+00>
  constexpr auto h = FourFloatsVecSize{8, 4, 2, 1} * 3;
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.200000e+01, float 6.000000e+00, float 3.000000e+00>
  constexpr auto j = FourFloatsVecSize{12, 15, 18, 21} / 3;
  // CHECK: store <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>

  constexpr auto l = 3 + FourFloatsVecSize{6, 3, 2, 1};
  // CHECK: store <4 x float> <float 9.000000e+00, float 6.000000e+00, float 5.000000e+00, float 4.000000e+00>
  constexpr auto m = 20 - FourFloatsVecSize{19, 15, 12, 10};
  // CHECK: store <4 x float> <float 1.000000e+00, float 5.000000e+00, float 8.000000e+00, float 1.000000e+01>
  constexpr auto n = 3 * FourFloatsVecSize{8, 4, 2, 1};
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.200000e+01, float 6.000000e+00, float 3.000000e+00>
  constexpr auto o = 100 / FourFloatsVecSize{12, 15, 18, 21};
  // CHECK: store <4 x float> <float 0x4020AAAAA0000000, float 0x401AAAAAA0000000, float 0x401638E380000000, float 0x40130C30C0000000>

  constexpr auto w = FourFloatsVecSize{1, 2, 3, 4} <
                     FourFloatsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  constexpr auto x = FourFloatsVecSize{1, 2, 3, 4} >
                     FourFloatsVecSize{4, 3, 2, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto y = FourFloatsVecSize{1, 2, 3, 4} <=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>
  constexpr auto z = FourFloatsVecSize{1, 2, 3, 4} >=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto A = FourFloatsVecSize{1, 2, 3, 4} ==
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 0>
  constexpr auto B = FourFloatsVecSize{1, 2, 3, 4} !=
                     FourFloatsVecSize{4, 3, 3, 1};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 1>

  constexpr auto C = FourFloatsVecSize{1, 2, 3, 4} < 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 0>
  constexpr auto D = FourFloatsVecSize{1, 2, 3, 4} > 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 0, i32 1>
  constexpr auto E = FourFloatsVecSize{1, 2, 3, 4} <= 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>
  constexpr auto F = FourFloatsVecSize{1, 2, 3, 4} >= 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  constexpr auto G = FourFloatsVecSize{1, 2, 3, 4} == 3;
  // CHECK: store <4 x i32> <i32 0, i32 0, i32 1, i32 0>
  constexpr auto H = FourFloatsVecSize{1, 2, 3, 4} != 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 0, i32 1>

  constexpr auto O = FourFloatsVecSize{5, 0, 6, 0} &&
                     FourFloatsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i32> <i32 1, i32 0, i32 0, i32 0>
  constexpr auto P = FourFloatsVecSize{5, 0, 6, 0} ||
                     FourFloatsVecSize{5, 5, 0, 0};
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 0>

  constexpr auto Q = FourFloatsVecSize{5, 0, 6, 0} && 3;
  // CHECK: store <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  constexpr auto R = FourFloatsVecSize{5, 0, 6, 0} || 3;
  // CHECK: store <4 x i32> <i32 1, i32 1, i32 1, i32 1>

  constexpr auto T = CmpMul(a, b);
  // CHECK: store <4 x float> <float 1.080000e+02, float 1.800000e+01, float 5.600000e+01, float 7.200000e+01>

  constexpr auto U = CmpDiv(a, b);
  // CHECK: store <4 x float> <float 3.000000e+00, float 1.800000e+01, float 8.750000e-01, float 0x3FEC71C720000000>

  constexpr auto X = CmpAdd(a, b);
  // CHECK: store <4 x float> <float 2.400000e+01, float 1.900000e+01, float 1.500000e+01, float 1.700000e+01>

  constexpr auto Y = CmpSub(a, b);
  // CHECK: store <4 x float> <float 1.200000e+01, float 1.700000e+01, float -1.000000e+00, float -1.000000e+00>
}
