xref: /llvm-project/clang/test/Headers/x86-header-warnings.c (revision 7de71613049fa1333ef819b6dc740356ff4efff5)
1 // Fix sign conversion warnings found by fsanitize=implicit-integer-sign-change
2 // in intrinsic headers.
3 // Preprocess file to workaround no warnings in system headers.
4 // RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ffreestanding -E -CC 2>&1 \
5 // RUN:     | %clang_cc1 -x c - -triple x86_64-pc-linux-gnu -Wsign-conversion -fsyntax-only -verify
6 // REQUIRES: x86-registered-target
7 
8 #include <x86intrin.h>
9 
test0(void)10 void test0(void) {
11   // expected-no-diagnostics
12   _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
13   _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_OFF);
14   _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_MASK);
15 
16   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_INVALID);
17   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_DENORM);
18   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_DIV_ZERO);
19   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_OVERFLOW);
20   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_UNDERFLOW);
21   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_INEXACT);
22   _MM_SET_EXCEPTION_STATE(_MM_EXCEPT_MASK);
23 
24   _MM_SET_EXCEPTION_MASK(_MM_MASK_INVALID);
25   _MM_SET_EXCEPTION_MASK(_MM_MASK_DENORM);
26   _MM_SET_EXCEPTION_MASK(_MM_MASK_DIV_ZERO);
27   _MM_SET_EXCEPTION_MASK(_MM_MASK_OVERFLOW);
28   _MM_SET_EXCEPTION_MASK(_MM_MASK_UNDERFLOW);
29   _MM_SET_EXCEPTION_MASK(_MM_MASK_INEXACT);
30   _MM_SET_EXCEPTION_MASK(_MM_MASK_MASK);
31 
32   _MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST);
33   _MM_SET_ROUNDING_MODE(_MM_ROUND_DOWN);
34   _MM_SET_ROUNDING_MODE(_MM_ROUND_UP);
35   _MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO);
36   _MM_SET_ROUNDING_MODE(_MM_ROUND_MASK);
37 
38   _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_MASK);
39   _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
40   _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_OFF);
41 }
42