// Fix sign conversion warnings found by fsanitize=implicit-integer-sign-change
// in intrinsic headers.
// Preprocess file to workaround no warnings in system headers.
// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ffreestanding -E -CC 2>&1 \
// RUN:     | %clang_cc1 -x c - -triple x86_64-pc-linux-gnu -Wsign-conversion -fsyntax-only -verify
// REQUIRES: x86-registered-target

#include <x86intrin.h>

void test0() {
  // expected-no-diagnostics
  _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
  _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_OFF);
  _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_MASK);

  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_INVALID);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_DENORM);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_DIV_ZERO);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_OVERFLOW);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_UNDERFLOW);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_INEXACT);
  _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_MASK);

  _MM_SET_EXCEPTION_MASK(_MM_MASK_INVALID);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_DENORM);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_DIV_ZERO);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_OVERFLOW);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_UNDERFLOW);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_INEXACT);
  _MM_SET_EXCEPTION_MASK(_MM_MASK_MASK);

  _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST);
  _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN);
  _MM_SET_ROUNDING_MODE(_MM_ROUND_UP);
  _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO);
  _MM_SET_ROUNDING_MODE(_MM_ROUND_MASK);

  _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_MASK);
  _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
  _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_OFF);
}
